2011-09-07 74 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