好的,我會再試一次,問多次,但似乎沒有讓自己清楚。
首先,我在網頁上運行了一個AJAX腳本,該腳本允許我從遊戲中提取數據。
然後使用POST方法將這些數據發送到PHP'api'頁面。
我可以在我的瀏覽器的控制檯中看到數據實際上正在進行。
下面是數據流樣本:https://docs.google.com/document/d/1FLHiWBSBqqm7N8LvzISmiedQKxsqYM572iAT4CQpjP8/edit?usp=sharing
現在,這裏是我的問題:
我可以看到數據被解析到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的確如此,以至於我無法修改服務器端的代碼 - 從提供的內容 - 客戶端查找響應,然後才能觸發發送到服務器功能。
我能做些什麼錯誤正如你可以從谷歌鏈接數據中的HTML POST輸出中看到的,是正在被轉移,我如何訪問和操作這些數據?最終目標是在數據進入SQL數據庫時解析數據,但我需要確保首先處理數據。
我的環境 - 現在在開發中我使用的是本地機器,Apache運行在Linux操作系統上的PHP。我也有mySql加載,但現在不在場。所有最新版本,昨天剛剛安裝了dev環境。
更多信息 - 我嘗試在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);
另外一個信息位 - 從我可以辨認出在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); }
}
},
所以更新到這個上面:由韋恩提供的echo命令下面確實給了我的數據結構e $數據變量。現在有一個後續問題:我如何將所有我得到的數據(sender,data arrray等)轉換爲SQL表?在更新/刷新我定期創建的表格時,如何刪除數據庫中的數據?
你在$ data數組上做了var_dump嗎? –
我試過了,但在黑暗中拍攝了一下。如果我更改了PHP並且它不會將數據發送回客戶端,那麼我可以運行導出來測試,以便捕獲22. – MSM
它不會將數據發送回客戶端,因爲任何輸出都會打破輸出的JSON。如果你正在做一個var_dump,它應該只用於調試目的。 –