开发者

PHP REST variables missing

In this tutorial's processRequest method:

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

looks like $_GET variables are ignored when $_POST happens (at least this happening in my test setup - not the same script but idea is similar).

My test case:

//URL: `example.com/?iam=get`
//HTML:
<form acti开发者_StackOverflow中文版on="?iam=get" method="post">
    <input type="text" name="textinput" />
    <input type="submit" />
</form>

Printing $data on request gives me:

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

(Because of form's action, url isn't changing but $_GET variable iam is missing.)

I'm often using $_GET and $_POST variables mixed (AJAX requests, handling forms, etc.) but now i'm sure about i'm overlooking something. Where's my misunderstanding?

Thanks in advance, fabrik


The request method is always post here, so the switch comand ignores the "get"-part.

Try

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

and use the new variables.


In the code you've provided above $data is populated with either $_GET or $_POST depending on the request method.

If you submit a form $_GET is ignored. But in either case $_GET will still contain the "iam" variable and you can access it any time you want with something like

$iam = $_GET['iam'];


$_REQUEST might be what you are looking for. $_REQUEST Manual. If you don't want to trust it (it also stores $_COOKIE) you can write your own merger for $_GET and $_POST.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜