作者fr1432422 (倒頭栽)
看板Flash
標題[問題] Flash連結資料庫 (amfphp、PHP)
時間Mon Oct 10 21:21:33 2011
已爬完這裡的同樣問題文章,但沒能解決問題;資料庫版則是沒這類文章。
先說明一下我的環境
網頁用PHP做的,伺服器是AppServ,資料庫是MySQL
本機的預設
root是C:\AppServ\www ,這是照書上的預設,amfphp也裝在這裡
我想讓Flash連上資料庫,讓跑馬燈能出現使用者輸入的暱稱
於是買了「Flash資料庫應用即戰力」,跟著裡頭的步驟走都很順,直到Flash連線資料庫
開始出問題。
這是書上的範例檔案 HowAreYou.php
==============================================================================
<?php
class HowAreYou
{
function sendStr($yourname)
{
return "$yourname,你好阿!!" ;
}
}
?>
==============================================================================
這個檔案我用amfphp的browser測試沒問題,有回傳值,但是中文的部份會有亂碼問題
下面這個是書上的範例檔 test.fla中的第1個影格中的actionscript
==============================================================================
stop();
var connection:NetConnection; //宣告NetConnection物件
var responder:Responder; //宣告 Responder物件
//建立物件實體
responder = new Responder(onResult, onFault); //資料傳送成功或失敗
connection = new NetConnection;
//設定Service連線
var gateway:String = "/amfphp/gateway.php";
connection.connect(gateway); //連接amfphp資料夾裡的gateway.php
//資料傳送成功時
function onResult(Result:String):void {
my_txt.text=Result;
}
//資料傳送失敗時
function onFault():void {
my_txt.text="連接失敗";
}
//按下按鈕時
my_btn.addEventListener("click",loadPHP);
function loadPHP(me:MouseEvent){
//呼叫Remote Service中的方法(檔案名稱.方法名稱)
connection.call("HowAreYou.sendStr",responder,your_txt.text);
}
==============================================================================
在Flash測試中不斷出現Error #2044: 未處理的 NetStatusEvent:。 level=error,
code=NetConnection.Call.BadVersion at test_fla::MainTimeline/frame1()
以下則是我嘗試過的努力
==============================================================================
查到資料,有人說更改amfphp的gateway.php檔的第127行
從
$gateway->setCharsetHandler("utf8_decode","ISO-8859-1", "ISO-8859-1");
改為以下各種我皆試過
$gateway->setCharsetHandler("mbstring","UTF-8", "UTF-8"); <---失敗
$gateway->setCharsetHandler("utf8-decode","UTF-8", "UTF-8"); <---失敗
$gateway->setCharsetHandler("iconv","big5", "big5");<---解決中文亂碼;連線失敗
$gateway->setCharsetHandler( "mbstring", "gb2312", "gb2312" ); <---失敗
後來查出HowAreYou.php的程式碼開頭是
<? ,將它改為
<?php 後Flash連線依然有Error
先前文章有前輩提到這種Error是php的程式碼有錯誤,但我剛碰php1個月,也看不出哪裡
錯誤,我投降了,煩請這裡的高手們能指點一下,非常感謝&感激不盡
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.130.202.135
推 KawasumiMai:<?跟<?php怎麼印象中沒差... 10/10 22:02
推 peter10554:我用舊版的範例~也都是都要把<?多加php~不然讀不到 10/10 23:57
推 sextitanic:你的php檔案是存成 utf-8 的嗎? 10/11 00:01
→ sextitanic:如果是的話用第2個 utf8-decode 應該是會有效的 10/11 00:02
→ sextitanic:還有gateway變數的值,要依swf檔跟amfphp資料夾 10/11 00:06
→ sextitanic:的相對位置而有所改變 10/11 00:06
-------------------------------------------------------------------
有試過把php另存成 utf-8,還是同樣行不通...囧
※ 編輯: fr1432422 來自: 140.130.202.135 (10/11 13:11)
推 STARGAZERs:檔案本身要存成 utf-8 設定也要改用 utf-8 10/11 15:38
-------------------------------------------------------------------
拖了好久才來po我找到的解決方法(發這文的隔天就解決了....)
我找到另一個解決方法
將amfphp裡的gateway.php打開,
找到第136和138行的程式碼(不一定是相同的行數,但是大概在那附近)
第136:
$gateway->disableDebug();
第138:
$gateway->disableStandalonePlayer();
在這兩行前面加上 // 把它們變成註解(避免以後又要用到),改成如下
第136:
//$gateway->disableDebug();
第138:
//$gateway->disableStandalonePlayer();
Error 2044的問題就解決
補充在這裡給有碰到相同問題的人參考^__^
※ 編輯: fr1432422 來自: 140.130.202.135 (10/18 10:36)