2011-09-07 85 views
0

我遇到了Flash和PHP的奇怪問題。實際上,我有一個忘記密碼的形式在閃存中用戶輸入他的電子郵件ID,當按下提交按鈕閃存傳遞數據到PHP和檢索(這裏我卡住)來自PHP的數據。FLASH/PHP的奇怪問題

問題是Flash從PHP獲取UNDEFINED

我的flash代碼。

var email_id:RegExp = /(\w|[_.\-])[email protected]((\w|-)+\.)+\w{2,4}+/; 
var urlRequest:URLRequest = new URLRequest("forgot_password.php"); 
var urlVariable:URLVariables = new URLVariables(); 

var urlLoader:URLLoader = new URLLoader(); 
urlLoader.dataFormat = URLLoaderDataFormat.VARIABLES; 

urlLoader.addEventListener(Event.COMPLETE, urlLoader_complete); 


btn_submit.addEventListener(MouseEvent.CLICK, btn_submit_click); 
function btn_submit_click(e:Event) 
{ 
    if(txt_email.text == "") 
    { 
     txt_error.text = "Email can not be blank."; 
    } 
    else if(!email_id.test(txt_email.text)) 
    { 
     txt_error.text = "Enter proper email address."; 
    } 
    else 
    { 
     urlVariable.mailId = txt_email.text; 
     urlRequest.data = urlVariable; 

     urlLoader.load(urlRequest); 
    } 
} 

function urlLoader_complete(e:Event) 
{ 
     trace(e.target.data.return_var); // **it receive Undefined** i am checking in flashlog.txt :(
    //txt_error.text = e.target.data.return_var; 
} 

我的PHP代碼

<?php 
require_once('connection.php'); 

$query = "select * from user_account where email='".$_REQUEST['mailId']."'"; 
$result = mysql_query($query); 

if(mysql_num_rows($result) > 0) 
{ 
    echo "return_var=success"; 
} 
else 
{ 
    echo "return_var=failed"; 
} 
?> 

有return_var前的空間,但我不知道爲什麼..我已經檢查了我的PHP文件100倍,它比什麼是完美的問題??????????????????????????????????????????

enter image description here

編輯:

If i am tracing 

    trace(e.target.data); 

it traces 
    %20return%5Fvar=success 

注意:%20返回之前%5var //那是什麼?????????????

+0

Thanx ajreal ... – hardik

+0

我沒有看到一個明顯的問題,但無論如何你也應該做一個服務器端驗證,導致其真的很容易讓別人發佈你的表格與無效的電子郵件 – nonouco

+0

您的服務器返回值是「STRING」將其解析爲字符串而不是對象。如果你想從服務器傳遞一個對象,使用JSON。 –

回答

0

首先感謝大家的貢獻。

現在這個問題與Flash或PHP無關,但與我們的服務器有關。如果我正在創建PHP文件並直接保存在我們的服務器上,那麼PHP文件會給出在變量名稱之前添加一個空格的響應。如果我正在創建PHP文件並將其保存在本地驅動器中並粘貼到我的服務器上,它完美起作用!!!!!!!!!!!!!!!!!

看到兩個文件之間的差異響應..............

return_var=success 

return_var=success // adding space before response. 

可它的問題與內存有關,但現在它的做工精細,從而歡呼!!!! !!!!!

再次很多Thanx。

1

顯然,問題並不在PHP,反正你應該寫這樣的事情,以防止SQL注入......

<?php 
require_once 'connection.php'; 

$email = $_GET['mailId']; 
$email = mysql_real_escape_string($email); 

$query = "SELECT email FROM user_account WHERE email = '$email' LIMIT 1"; 
$result = mysql_query($query); 

echo (mysql_num_rows($result) > 0)? 'return_var=success': 'return_var=failed'; 
?> 
+1

+1注射阻滯 –

0

刪除此行:

urlLoader.dataFormat = URLLoaderDataFormat.VARIABLES; 

,改變你的urlLoader_complete()功能到:

function urlLoader_complete(e:Event) 
{ 
    var loader:URLLoader = URLLoader(e.target); 
    var vars:URLVariables = new URLVariables(loader.data); 
    trace(vars.return_var); 
} 

這有幫助嗎?

+0

Thanx爲答案。但問題是不同的請檢查編輯。 – hardik