2010-10-20 100 views
2

this tutorialprocessRequest方法:PHP REST變量缺失

... 
switch ($request_method){ 
case 'get': 
     $data = $_GET; 
     break; 
case 'post': 
     $data = $_POST; 
     break; 
... 

時像$ _ POST發生(至少這種事情發生在我的測試設置$ _ GET變量被忽略 - 不一樣的劇本,但想法是相似)。

我的測試用例:

//URL: `example.com/?iam=get` 
//HTML: 
<form action="?iam=get" method="post"> 
    <input type="text" name="textinput" /> 
    <input type="submit" /> 
</form> 

印刷$data要求給我:

Array ([iam] => get) //Opening the page without submit 
Array ([textinput] => angry fabrik) //Submitting the form 

(因爲形式的行動,網址沒有改變,但$ _ GET變量iam缺失)

我經常使用$ _GET和$ _POST變量混合(AJAX請求,處理表單等)但現在我確信我忽略了一些東西。我的誤解在哪裏?

由於提前, FABRIK

回答

1

請求方法總是張貼在這裏,所以開關COMAND忽略「獲得」雙組分。

嘗試

... 
switch ($request_method){ 
case 'get': 
     $data_get = $_GET; 
     break; 
case 'post': 
     $data_post = $_POST; 
     $data_get = $_GET; 
     break; 
... 

,並使用新的變量。

+0

是的,這很清楚,也可以工作,但在這種情況下,我可以忽略整個'switch'的東西:可以在沒有開關的情況下填充這些變量這個教程有什麼意義,以及它如何處理$ _POST和$ _GET? – fabrik 2010-10-20 13:16:41

+0

我不認爲混合get和post是「RESTful」。所以你沒有t處理兩者。 – 2010-10-20 18:41:52

+0

REST是不是要處理url(作爲參數)?僅僅因爲所有的例子都是類似的:'GET請求到/ api/users - 列出所有用戶','POST請求到/ api/users - 創建一個新用戶'(順便說一句,在這些例子中沒有提供$ _GET變量。 ) – fabrik 2010-10-21 06:18:19

0

根據請求方法,您在上面提供的代碼中使用$ _GET或$ _POST填充$data

如果您提交表單$ _GET被忽略。但是,在這兩種情況下$ _GET仍將包含"iam「變量,你可以訪問你想要的東西,如

$iam = $_GET['iam']; 
+0

雖然你寫的是一個工作解決方案,我想了解如何處理請求對象本身的這些請求。 – fabrik 2010-10-20 13:13:19

0

$ _REQUEST可能是你在找什麼$_REQUEST Manual。任何時候,如果你不想爲了信任它(它也存儲$ _COOKIE),你可以爲$ _GET和$ _POST編寫你自己的合併。

+0

對不起,這絕對不是這個難題的缺失部分。 – fabrik 2010-10-20 13:47:47