わかりました、これをもう一度試してみます。何度も尋ねましたが、自分自身を明確にしていないようです。
まず、ゲームからデータを抽出できる Web ページで AJAX スクリプトを実行します。
このデータは、POST メソッドを使用して PHP の「api」ページに送信されます。
ブラウザのコンソールで、データが実際に移動していることを確認できます。
データ ストリームのサンプルは次のとおりです。
ここに私の問題があります:
データが PHP に解析されていることがわかります。PHPコードは以下です。
<?php
// set headers for API
header('Access-Control-Allow-Origin: '.$_SERVER['HTTP_ORIGIN']);
header('Access-Control-Allow-Methods: POST, GET, OPTIONS');
header('Access-Control-Max-Age: 1000');
header('Access-Control-Allow-Headers: Content-Type');
header('Content-type: application/json');
$m = false;
if(preg_match('/http\:\/\/prodgame([0-9]+)\.lordofultima\.com/',$_SERVER['HTTP_ORIGIN'],$m))
{ $m = $m[1]; }
if(empty($m)) { die('Invalid Origin.'); }
if(!empty($_POST['data_type']))
{
$sender = $_POST['sender'];
$alliance = $_POST['alliance'];
$request = $_POST['data_type'];
$data = $_POST['data'];
// Response to Alliance Info Exporter
$json = array(
'message' => 'recieved.',
'data' => array(),
'error' => false
);
// handle data types
switch($request)
{
case 'connection_test': $json['message'] = 'Welcome to our server2. Your are connected!'; break;
case 'member' : /* Code for member request */ break;
case 'city' : /* Code for member request */ break;
case 'support' : /* Code for support request */ break;
default : $json['message'] = 'Nothing Done.'; break;
}
// Respond
die(json_encode($json));
}
die('No Access.');
?>
データは、このオンライン ゲームのプレイ中にローカルで実行した .js ファイルから解析されています。作成者は PHP の例を投稿しました。これを使用して必要なコードを switch/case ステートメントに追加し、データを操作することを意図していることは明らかです。
ここで、データを検証するためだけに、さまざまなオプション ($_POST、または $POST('data' または PHP で定義されている変数)) を指定して json_decode を使用してデータを抽出するためだけのテストとして試みました。何も機能しません。
var_dump が機能しないのは、クライアント js が提供されているものからサーバー側の PHP のコードを変更できないためです。クライアントは、サーバーへの送信機能をトリガーする前に応答を探します。
私は何が間違っているのでしょうか。HTML POST 出力からわかるように、Google リンク データが転送されています。このデータにアクセスして操作するにはどうすればよいですか? 私の最終的な目標は、データが SQL データベースに入力されるときにデータを解析することですが、最初にそれを確実に処理する必要があります。
私の環境 - 現在、開発中はローカル マシン、Linux OS で実行されている Apache 上の PHP を使用しています。また、mySql をロードしましたが、現在は使用していません。最新のすべてのバージョン。昨日開発環境をインストールしたばかりです。
いくつかの詳細情報 - このコードをドキュメントの前半と同様に case ステートメントに挿入しようとしましたが、これまたは var_export を使用して得た最良の出力は、0 バイトのファイルまたは単に NULL を示すファイルです。
$data1 = json_decode($_POST, $assoc = null);
$f = fopen("/var/www/aix/data/alliance6.txt", "w");
fwrite($f, $data1);
fclose($f);
もう1つの情報-javascriptのサーバー関数への送信を確認できるものから、次のように呼び出されます。
// send to server
req = main.ajax.send({
alliance : {
id : a.id,
name : a.name,
members : a.members,
score : a.total_score
},
data_type:type,
data:json
});
if(req){
req.success(function(x){
main.aix.set_loading(tab.index,"Data sent to server!",1000);
main.aix.get_saved(id,type).sent = true;
});
}
});
}
else
{ main.aix.set_loading(tab.index,"This data has already been sent.",2000); }
}
if(typeof callback == "function")
{ callback(json); }
}
},
したがって、上記の更新: 以下の Wayne が提供する echo コマンドは、実際に $data 変数のデータ構造を提供します。フォローアップの質問: 取得しているすべてのデータ (送信者、データ配列など) を SQL テーブルに転置するにはどうすればよいですか? また、作成したテーブルを定期的に更新/更新する場合、データベース内のデータをどのように重複排除しますか?