2010-10-20 101 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