FLASH / PHP的奇怪问题

时间:2011-09-07 12:11:49

标签: php flash actionscript-3 actionscript

我遇到了Flash和PHP的奇怪问题。实际上我在flash中有一个忘记密码表单,用户输入他的电子邮件ID,当按下提交按钮时,flash将数据传递给PHP并且检索(这里我被卡住)数据来自PHP。

问题是Flash从PHP获得 UNDEFINED

我的Flash代码。

var email_id:RegExp = /(\w|[_.\-])+@((\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

在返回%5var之前注意%20 //这是什么?????????????

3 个答案:

答案 0 :(得分: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 :(得分: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);
}

有帮助吗?

答案 2 :(得分:-1)

首先,感谢大家的贡献。

现在问题与Flash或PHP无关,但它与我们的服务器有关。如果我正在创建PHP文件并直接保存在我们的服务器上,那么PHP文件会在变量名称之前添加一个空格来给出响应。如果我正在创建PHP文件并将其保存在我的本地驱动器中,而不是将其粘贴在我的服务器上,它的工作原理完美!!!!!!!!!!!!!!!!!

查看两个文件之间的响应差异..............

return_var=success

 return_var=success // adding space before response.

可能是它与记忆有关的问题,但现在它的工作正常,所以欢呼!!!!!!!!!

再次许多Thanx。