0

我知道以前有人问过这个问题,但即使在访问了类似的问题之后我也没有成功。我目前正在开发一个 Flash 项目,该项目涉及能够创建一个帐户并登录。但是,我一直在尝试解析 PHP 输出时得到“未定义”。

这是包含代码的函数的 ActionScript 3.0 代码。

function gosubmit(event:MouseEvent) {
    if (username.text != "" && password.text != "") {
        var phpVars:URLVariables = new URLVariables();
        var phpFileRequest:URLRequest = new URLRequest();
        phpFileRequest.url = "php/controlpanel.php";
        phpFileRequest.method = URLRequestMethod.POST;
        phpFileRequest.data = phpVars;

        var phpLoader:URLLoader = new URLLoader();
        phpLoader.dataFormat = URLLoaderDataFormat.VARIABLES;
        phpLoader.addEventListener(Event.COMPLETE, execResult);

        phpVars.username = username.text;
        phpVars.password = password.text;

        phpLoader.load(phpFileRequest);
        phpLoader.addEventListener(Event.COMPLETE, execResult);

        function execResult(event:Event) {
            trace(event.target.data.execResult);
        }
    }

这是php/controlpanel.php 中的 PHP 代码。

<?php

mysql_connect("localhost", "root", "password");
// change localhost to something else later
// change password to something else later
mysql_select_db("game");

$username = mysql_real_escape_string($_POST['username']);
$password = mysql_real_escape_string($_POST['password']);
$salt_mysql = mysql_query("SELECT salt FROM players WHERE username='".$username."'"); 
$salt = salt_row["salt"];    

$unhashed_password = $password.$salt;
$password = hash("SHA256", $unhashed_password); 

$exec_mysql = mysql_query("SELECT * FROM players WHERE username='".$username."' AND password='".$password."'");

if (mysql_num_rows($exec_mysql)) == 1 {
    echo "execResult=login_accepted";
}

if (mysql_num_rows($exec_mysql)) == 0 {
    echo "execResult=login_rejected";
}

else {
    echo "execResult=error";
}

?>

我已经将我的代码与多个源进行了比较,甚至从源中复制了整个项目,试图找出我做错了什么,但收效甚微。但是,我发现了一些奇怪的东西。出于纯粹的实验,我将以下内容放入controlpanel.php

=&execResult=test

而且,我没有得到“未定义”,而是得到了“测试”。奇怪的是我只使用了那一行代码;没有<?php标签或任何东西。此外,如果我在此之外添加更多代码,无论我输入哪种类型的代码,它总是会按字面意思显示在 Flash 输出中。所以我现在可以硬编码一个值并将其返回到 Flash 中,但这不是我需要的。我需要能够根据条件确定一个值并将其自动返回到 Flash 中。

谁能帮我吗?我真的很难过。

谢谢 :)

4

1 回答 1

2

似乎您正在从编辑器/调试器执行闪存,(如果您正在使用跟踪功能检查结果)。

然后使用相对 url 请求“php/controlpanel.php”就像在本地打开文件而不从服务器执行 php 指令一样。

也许这就是为什么您从字面上获得所有 php 代码,或者当您仅将“=&execResult=test”作为 php 文件的内容时获得正确值的原因。

尝试使用带有 http:// 的绝对 url 以执行涉及服务器和 php 执行的 http 请求。

于 2012-09-27T12:41:37.583 回答