萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 軟體知識 >  >> 影像處理 >> Flash 教學

Flash + PHP + MySQL 留言本系統完整開發教學

本教學完整記錄從環境搭建、資料庫設計、PHP 後端 API、Flash 前端交互到部署優化的留言本全棧開發流程。雖非生產級完美代碼,但涵蓋 **Flash 與後端通信核心模式**,極適合理解客戶端-伺服器架構基礎。

環境搭建(整合包傻瓜安裝)

  • 組件:Apache、PHP 5.2.6、MySQL 5.0、Zend Optimizer、phpMyAdmin、eAccelerator。
  • 目錄結構:
    Apache/ (Web Server)
    MySQL-5.0.15b/data/ (資料庫文件)
    MySQL-5.0.15b/bin/ (CLI 工具)
    php-5.2.6-Win32/ (PHP 解釋器)
    htdocs/ 或 www/ (網站根目錄,放 SWF/HTML/PHP)
    phpMyAdmin/ (Web 管理介面)
  • 安裝提示輸入 MySQL 密碼(例:sun),用戶名 root。
  • 瀏覽器訪問 https://127.0.0.1 驗證環境,開啟 Apache 目錄索引便於測試。

環境套件目錄結構

安裝過程輸入 MySQL 密碼

瀏覽器驗證環境配置

開啟 Apache 目錄索引

核心數據流設計

// 1. PHP ←→ MySQL
// 寫入:INSERT INTO myguestbook(name, comment) VALUES ("張三", "這是留言");
// 讀取:SELECT * FROM myguestbook;

// 2. SWF ←→ PHP (LoadVars / XML)
// SWF → PHP: sendAndLoad("datatosql.php", data_lv, "POST") 發送 uname、comment 變數
// PHP → SWF: echo XML 字串,SWF 解析 XML 顯示留言列表

關鍵 PHP 腳本

connectdb.php (資料庫連線模組化)

<?php
$conn = mysql_connect("localhost", "root", "sun") or die(mysql_error());
mysql_select_db("myguestbook", $conn) or die(mysql_error());
mysql_query("SET NAMES 'utf8'"); // 解決中文亂碼關鍵
?>

datatosql.php (接收留言寫入)

<?php
require "connectdb.php";
$name = $_POST['uname'];
$comment = $_POST['comment'];
$time = date("Ymd,l,H:i");
$sql = "INSERT INTO myguestbook (name, comment, time) VALUES ('$name', '$comment', '$time')";
mysql_query($sql) or die(mysql_error());
echo "success=1";
?>

datatoxml.php (讀取留言輸出 XML)

<?php
require "connectdb.php";
mysql_query("SET NAMES 'utf8'");
$result = mysql_query("SELECT * FROM myguestbook ORDER BY id DESC");
header("Content-Type: text/xml");
echo "<messages>";
while ($row = mysql_fetch_assoc($result)) {
    echo "<msg><name>{$row['name']}</name><comment>{$row['comment']}</comment><time>{$row['time']}</time></msg>";
}
echo "</messages>";
?>

Flash 前端邏輯 (AS2 LoadVars)

// 發送留言
var send_lv:LoadVars = new LoadVars();
send_lv.uname = input_name.text;
send_lv.comment = input_comment.text;
send_lv.sendAndLoad("datatosql.php", send_lv, "POST");
send_lv.onLoad = function(success) { if (success) loadMessages(); };

// 讀取留言
var xml:XML = new XML();
xml.ignoreWhite = true;
xml.onLoad = function(success) {
    if (success) {
        var list = this.firstChild.childNodes;
        // 解析 XML 填充列表組件...
    }
};
xml.load("datatoxml.php?n=" + random(9999)); // 亂數防快取

完成效果截圖

留言本運行界面

避坑指南與優化建議

問題解決方案
中文亂碼 (????)建庫選 utf8_general_ci;PHP 查詢前 mysql_query("SET NAMES 'utf8'");Flash 確保編碼 UTF-8。
PHP 代碼重複連線邏輯抽離 connectdb.php,require 復用。
MySQL 報錯難查用 mysql_errno()、mysql_error() 輸出錯誤碼/訊息。
SWF 讀取舊快取請求 URL 附加隨機參數 ?n=Math.random()。
安全性**生產環境必須**:SQL 參數化 (PDO/Prepared Statements)、輸入驗證/轉義、HTTPS、CSRF Token、限流。

現代化遷移建議:AS2→AS3/JS,LoadVars→URLLoader+JSON,PHP mysql_*→PDO/MySQLi,SWF→HTML5 Canvas/WebGL。但「客戶端狀態管理 + 異步請求 + 伺服器持久化」的核心架構思想永不過時。

copyright © 萬盛學電腦網 all rights reserved