ここに私が持っている2つのスクリプトがあります
スクリプト 1:
<?
include('config.php');
$json = $_POST['payload'];
$fine = var_dump($json);
$secret = "78f12668216b562a79d46b170dc59f695070e532";
$obj = json_decode($json, true);
$fp = fopen('data.txt', 'w');
fwrite($fp, $json);
fwrite($fp, $fine);
fclose($fp);
if(sha1($json . $secret) == $_POST['signature']) {
$conversion_id = md5(($obj['amount']));
echo "OK";
echo $conversion_id;
mysql_query("INSERT INTO completed (`id`,`uid`,`completedid`) VALUES ('','".$obj['uid']."','".$conversion_id."')");
} else {
}
?>
スクリプト 2:
<?
$json = $_POST['payload'];
$secret = "78f12668216b562a79d46b170dc59f695070e532";
$obj = json_decode($json);
if(sha1($json+$secret) == $_POST['signature']) {
print "OK";
} else {
}
?>
ここでの問題は、すべて NULL 値を返すことです。私は JSON の専門家ではないので、ここで何が起こっているのかわかりません。情報は次のような情報を送信する外部の Web サイトからのものであるため、実際にテストする方法はありません。
{
payload: {
uid: "900af657a65e",
amount: 50,
adjusted_amount: 25
},
signature: "4dd0f5da77ecaf88628967bbd91d9506"
}
このサイトではスクリプトをテストできますが、json_decode が NULL 値を提供しているため、署名ブロックを通過できません。
Google ChromeのDev Toolsによると、サーバーからスクリプトをテストしようとしたときに送信される応答は{"error":"The start uri returned a non-200 response."}
、それが私に提供するすべての情報であり、送信されているものは記載されておらず、受信されているだけです
自分でテストする方法はありますか?または、このスクリプトに単純なエラーがありますか?
編集
渡される情報を書き込むファイルを設定しました。これがサーバーから送信されているものです
{"job_id":1337,"job_title":"CrowdFlower test job","amount":30,"uid":"inspire","adjusted_amount":50}
最初はスラッシュがあったので、変数に追加stripslashes()
したところ$json
、明らかにスラッシュが取り除かれましたが、ヒットするjson_decode()
と情報がプルされず、渡される情報に何か問題がありますか?