2017-04-01 84 views
0

我已經編寫了一個用於學習如何創建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上線
{ 「地位」:空, 「名」:空, 「電子郵件」:空}」

請提出什麼是錯的。

+0

您但是從我看到你傳遞參數的GET請求讀取$ _ POST – georoot

+0

'$ _POST'是'$ _GET'不同,URL參數被拉通過'$ _GET',如果你通過'$ _POST'把它拉出來,把你的字段放在http請求的正文部分,並且改變你的內容類型 – Roljhon

+0

也只是一個提示,用'postman'來測試http api – georoot

回答

0
  1. 您發送POST請求,但您的數據(姓名,電子郵件和狀態)通過GET拉
  2. 你是獲得PHP腳本錯誤,因爲你必須mysql_real_escape_string

之前使用的mysql_connect PS mysql_real_escape_string - 在PHP 5.5.0中被棄用,並且在PHP 7.0.0中被刪除。相反,應該使用MySQLi或PDO_MySQL擴展。

這裏你會找到工作的PHP代碼(但改變登錄名和密碼到您):

<?php 

if($_SERVER['REQUEST_METHOD'] == "POST") { 
    mysql_connect('localhost', 'root', 'password') OR die(mysql_error()); 

    // 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); 

是安裝郵差應用程序之後。並嘗試發送該請求:

enter image description here

+0

謝謝..我後來意識到這一點..這工作! :d –