0

フラッシュゲームをしています。スコアを .php でデータベースに送信したいと考えています。どうやってやるの?いくつかの記事を書きましたが、方法がわかりませんでした。actionscript3側とphp側はどうすればいいですか?私のデータベース名は my_db で、変数は _score です。

4

2 に答える 2

3

まず、URLLoader を作成し、送信する変数をリクエストのヘッダーに格納する必要があります。URL をロードして変数を送信した後、COMPLETE イベントをリッスンして、PHP から Flash に変数を取得できるようにします。

ActionScript 3 コード:

private function SendScore(score:int) {
    //Use URLVariables Class to store our Variables and send them to our URL
    var variables:URLVariables = new URLVariables();
    //you can create as many variables you want (variables.variablename);
    variables.score = score;
    //URLLoader to load the URL
    var urlloader:URLLoader = new URLLoader;
    //Simple URLRequest with our URL
    var urlrequest:URLRequest = new URLRequest('http://www.mysite.com');
    //We set the method to POST. You can also use GET
    urlrequest.method = URLRequestMethod.POST;
    //We declare our set of variables to the data of our urlrequest
    urlrequest.data = variables;

    //We load the URL           
    urlloader.load(urlrequest);
    //We need to listen to an Event.COMLETE when we want to load variables FROM PHP
    urlloader.addEventListener(Event.COMPLETE, CompleteHandler, false, 0, true);
    //With  the listening to IOErrorEvent.IO_ERRORwe can intercept an error and can use it for Debugging
    urlloader.addEventListener(IOErrorEvent.IO_ERROR , ErrorHandler, false, 0, true);
}

//CompleteHandler will be used when the Load of the URL is completed
private function CompleteHandler(e:Event) {
    //Received Variables from PHP script
    var vars:URLVariables = new URLVariables(e.target.data);
    //You can access all variables from PHP with vars.xxxx
    //Example: vars.var1, vars.var2
    if(vars.success) trace('Saving succeeded');
    else ('Saving failed');
}

//ErrorHandler to receive error messages and don't fire exception errors
private function ErrorHandler(e:IOErrorEvent) {
    trace('Error occured');
}

PHP では、Flash からメソッド POST で変数を受け取り、$_POST['xxx'] で使用できます。スコアをデータベースに挿入し、INSERT が成功したかどうかを確認し、この変数を「ブラウザ」/Flash に送り返します。

PHP コード (データベース操作に PDO を使用しています: http://php.net/manual/de/book.pdo.php ):

try {
    //Establishing database connection with PDO
    $DB = new PDO($dsn, $user, $pw, array(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true));
} catch (PDOException $e) {
    //Error catching
    print "Connection to Database failed: " . $e->getMessage() . "<br />";
    die();
}

//Create a SQL statement, prepare it and execute it to INSERT the data into database
//the "variables.score" from AS3 can be read with $_POST['score'], cause we used POST as method
$sql = "INSERT INTO my_db (is_score) VALUES ('".$_POST['score']."');";
$stmt = $DB->prepare($sql);
$stmt->execute();

//Here we send back a variable to AS3:
//If you want to send more variables back use the & sign to append more variables
//example: 'succeds=true&var1=this&var2=there'
//Can be read in CompleteHandler with vars.success
if($stmt->rowCount() > 0) echo('success=true');
else echo('success=false');
于 2012-07-11T12:11:48.093 に答える
0

最も簡単な方法は、フラッシュアプ​​リケーション内からphp Webスクリプトを呼び出し、HTTPGETを使用して新しいスコアをURLに送信することです。URLLoaderを使用します。その後、PHPスクリプトは、すべてが正常に実行されたことを示す確認応答をFlashアプリケーションに返すことができます。

これは、URLLoaderを使用する方法の例です。単純なPHPの知識で十分です。

于 2012-07-11T11:57:44.667 に答える