06/14: ActionScriptからPHPに変数を渡し、結果を得る
Category: ActionScript
Posted by: sato
PHPを介して処理することで、データベースを操作したりすることも可能です。
サンプルでは、ユーザー名とパスワードをPHPに渡し、PHPがデータベースに問い合わせ、その結果のアカウントIDを受け取っています。
ユーザー名:test パスワード:pass
ただし、Flashでユーザー認証を行う場合、(作り方によりますが)タイムラインを操作され認証をスキップされたりする恐れがありますので、PHPから結果を得る際にそのログイン中にだけ有効なユニークコードを生成するなどの対策をした方が良いと思います。(これについてはまたの機会に)
ステージにユーザー名とパスワードを入力するテキストボックスと、ログインボタンと、メッセージ表示のテキストボックスを用意し、それぞれ名前を、a_name_box、a_pass_box、login_button、msg_box、とします。
ルートタイムラインに以下のActionScriptを記述します。
PHP側では、
といった感じで結果を出力すると、Flash側のLoadVars(サンプルではloginData)のパラメータとして追加されます。
今回は、sendAndLoadの紹介がメインですので、承認の仕組みとしてはかなり手を抜いてしまいました。(例えば、PHPが返す結果の判定が、"NG"以外OKとしているのは良くないですね。)
サンプルはこちらからダウンロードできます。
zipファイル[221clicks]
サンプルでは、ユーザー名とパスワードをPHPに渡し、PHPがデータベースに問い合わせ、その結果のアカウントIDを受け取っています。
ユーザー名:test パスワード:pass
ただし、Flashでユーザー認証を行う場合、(作り方によりますが)タイムラインを操作され認証をスキップされたりする恐れがありますので、PHPから結果を得る際にそのログイン中にだけ有効なユニークコードを生成するなどの対策をした方が良いと思います。(これについてはまたの機会に)
ステージにユーザー名とパスワードを入力するテキストボックスと、ログインボタンと、メッセージ表示のテキストボックスを用意し、それぞれ名前を、a_name_box、a_pass_box、login_button、msg_box、とします。
ルートタイムラインに以下のActionScriptを記述します。
login_button.onRelease = function() {
//SJISで受け取れるようにするなら、useCodepage = trueにする。
//デフォルトはUnicode(useCodepage = false)
//System.useCodepage = true;
loginData = new LoadVars();
//POSTするパラメータをセットしておく
loginData.a_name = a_name_box.text;
loginData.a_pass = a_pass_box.text;
//PHPにパラメータを渡し、結果を受け取る。
//urlはswfファイルと同じドメイン内にある必要があります。
loginData.sendAndLoad(php_url,loginData);
loginData.onLoad = function(){
//このイベントが呼ばれればロード完了
if (this.a_id == "NG"){
msg_box.text = "名前とパスワードが合いません";
} else {
//ユーザーidが返ってきている。
msg_box.text = "IDは、" + this.a_id + "ですね。";
}
}
}
PHP側では、
echo "a_id=".$id."&a=123";
今回は、sendAndLoadの紹介がメインですので、承認の仕組みとしてはかなり手を抜いてしまいました。(例えば、PHPが返す結果の判定が、"NG"以外OKとしているのは良くないですね。)
サンプルはこちらからダウンロードできます。
zipファイル[221clicks]