我知道以前有人问过这个问题,但即使在访问了类似的问题之后我也没有成功。我目前正在开发一个 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 中。
谁能帮我吗?我真的很难过。
谢谢 :)