この質問が以前に尋ねられたことは知っていますが、同様の質問にアクセスした後でもほとんど成功していません。私は現在、アカウントを作成してログインできるようにする 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
そして、「未定義」を取得する代わりに、「テスト」を取得しました。奇妙な点は、その 1 行のコードしか使用していないことです。<?php
タグも何もありません。さらに、それ以上のコードを入力すると、入力したコードの種類に関係なく、常に Flash 出力に文字通り表示されます。そのため、値をハードコードして Flash に返すことができるようになりましたが、それは私が必要としているものではありません。条件に基づいて値を決定し、それを自動的に Flash に返す必要があります。
誰でも私を助けることができますか?私は本当に困惑しています。
ありがとう :)