我想從json主體(即這是而不是表單數據)的JS客戶端收到POST請求,並將.gigs(javascript)數組保存到文件,然後檢查.password字段。這是我的代碼(基於Receive JSON POST with PHP)php:從POST接收json並保存到文件
$json_params = file_get_contents("php://input");
if (strlen($json_params) > 0 && isValidJSON($json_params)){
/* json_decode(..., true) returns an 'array', not an 'object'
* Working combination: json_decode($json_params) WITH $inp->password
*/
$inp = json_decode($json_params);
} else {
echo "could not decode POST body";
return;
}
$password = $inp->password;
// echo $password;
if ($password == "****") {
$gigs = $inp['gigs'];
// WAS $res = file_put_contents('gigs.json', json_encode($gigs), TEXT_FILE);
$res = file_put_contents('gigs.json', json_encode($gigs));
if ($res > 0) {
echo "Success";
return;
} else {
if (!$res) {
http_response_code(500);
echo "file_put_contents error:".$res;
return;
} else {
http_response_code(500);
echo "Error: saved zero data!";
return;
}
}
}
else {
// http_response_code(403); // (2)
echo "Password invalid";
return;
}
我發現的是,
- 如果我註釋掉
if
聲明並取消echo $password;
然後正確的密碼是有 - 如果我取消第2行,我想要做的,然後我回來一個500和錯誤日誌引用
Illegal string offset 'password'
上面行(1)。沒有這個,我得到一個"Success"
(全部爲相同的密碼)。
我不明白髮生了什麼,也不知道如何安全地獲取200,403和500錯誤消息。
爲什麼你在閱讀'php:// input'的時候說'POST request'?也''inp =「我從來沒有設置」;' - >這就是'null'通常是什麼。 –
這可能是我濫用的詞。我正在從客戶端發送ajax POST。我根本不懂PHP,所以我可能會做一些非常錯誤的事情。 –
那麼,你做的大部分事情都是錯誤的 –