[問題] Flash連結資料庫 (amfphp、PHP)

看板Flash作者 (倒頭栽)時間13年前 (2011/10/10 21:21), 編輯推噓4(403)
留言7則, 4人參與, 最新討論串1/1
已爬完這裡的同樣問題文章,但沒能解決問題;資料庫版則是沒這類文章。 先說明一下我的環境 網頁用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

10/10 22:02, , 1F
<?跟<?php怎麼印象中沒差...
10/10 22:02, 1F

10/10 23:57, , 2F
我用舊版的範例~也都是都要把<?多加php~不然讀不到
10/10 23:57, 2F

10/11 00:01, , 3F
你的php檔案是存成 utf-8 的嗎?
10/11 00:01, 3F

10/11 00:02, , 4F
如果是的話用第2個 utf8-decode 應該是會有效的
10/11 00:02, 4F

10/11 00:06, , 5F
還有gateway變數的值,要依swf檔跟amfphp資料夾
10/11 00:06, 5F

10/11 00:06, , 6F
的相對位置而有所改變
10/11 00:06, 6F
------------------------------------------------------------------- 有試過把php另存成 utf-8,還是同樣行不通...囧 ※ 編輯: fr1432422 來自: 140.130.202.135 (10/11 13:11)

10/11 15:38, , 7F
檔案本身要存成 utf-8 設定也要改用 utf-8
10/11 15:38, 7F
------------------------------------------------------------------- 拖了好久才來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)
文章代碼(AID): #1Eal5XW7 (Flash)
文章代碼(AID): #1Eal5XW7 (Flash)