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

そして、「未定義」を取得する代わりに、「テスト」を取得しました。奇妙な点は、その 1 行のコードしか使用していないことです。<?phpタグも何もありません。さらに、それ以上のコードを入力すると、入力したコードの種類に関係なく、常に Flash 出力に文字通り表示されます。そのため、値をハードコードして Flash に返すことができるようになりましたが、それは私が必要としているものではありません。条件に基づいて値を決定し、それを自動的に Flash に返す必要があります。

誰でも私を助けることができますか?私は本当に困惑しています。

ありがとう :)

4

1 に答える 1

2

エディター/デバッガーからフラッシュを実行しているようです(トレース機能で結果を確認している場合)。

次に、リクエスト「php / controlpanel.php」に相対URLを使用することは、phpディレクティブのサーバーから実行せずにファイルをローカルで開くようなものです。

たぶんそれが、文字通りすべてのphpコードを取得する理由、またはphpファイルのコンテンツとして「=&execResult=test」のみを入力した場合の正しい値を取得する理由です。

サーバーとPHPの実行が関係するhttpリクエストを実行するには、http://で絶対URLを使用してみてください。

于 2012-09-27T12:41:37.583 に答える