我已經編寫了一個用於學習如何創建REST API的PHP腳本。但是,我無法弄清楚代碼存在一些問題。在PHP腳本中POST變量的問題
下面是PHP腳本:
<?php
if($_SERVER['REQUEST_METHOD'] == "POST") {
// Get data
$name = isset($_POST['name']) ? mysql_real_escape_string($_POST['name']) : "";
$email = isset($_POST['email']) ? mysql_real_escape_string($_POST['email']) : "";
$status = isset($_POST['status']) ? mysql_real_escape_string($_POST['status']) : "";
$length = strlen($status);
if($length >= 10) {
$json = array("status" => 1, "name" => $name, "email" => $email, "status" => $status);
}
else {
$json = array("status" => 0, "msg" => "Error: Status too short!", "length" => $length);
}
}
else {
$json = array("status" => 0, "msg" => "Error: Request method not accepted");
}
/* Output header */
header('Content-type: application/json');
echo json_encode($json);
?>
我從Httprequester在Mozilla Firefox的URL 「http://localhost/RESTTEST.php?name=dparua&email=d.parua%40gmail.com&pwd=something&status=very%20very%20long%20status」
調用它。但是,這是我得到不論響應一個字符串作爲狀態傳遞的時間。 「{」 地位 「:0,」 味精 「:」 錯誤:狀態太短 「 」長!「:0}」
我試過的代碼更改爲此:
<?php
if($_SERVER['REQUEST_METHOD'] == "POST") {
$json = array("status" => 1, "name" => $_POST['name'], "email" => $_POST['email'], "status" => $_POST['status']);
}
else {
$json = array("status" => 0, "msg" => "Error: Request method not accepted");
}
/* Output header */
header('Content-type: application/json');
echo json_encode($json);
?>
和張貼到這個修改後的腳本,這是錯誤消息我得到: 「
注意:未定義指數:名C:\ XAMPP \ htdocs中\ RESTTEST.php上線
通知:未定義指數:電子郵件在C:\ XAMPP \ htdocs中\ RESTTEST.php線
通知:未定義指數:在C狀態:\ XAMPP \ htdocs中\ RESTTEST.php上線
{ 「地位」:空, 「名」:空, 「電子郵件」:空}」
請提出什麼是錯的。
您但是從我看到你傳遞參數的GET請求讀取$ _ POST – georoot
'$ _POST'是'$ _GET'不同,URL參數被拉通過'$ _GET',如果你通過'$ _POST'把它拉出來,把你的字段放在http請求的正文部分,並且改變你的內容類型 – Roljhon
也只是一個提示,用'postman'來測試http api – georoot