From: Adam Richardson on
On Wed, Aug 18, 2010 at 4:55 PM, Adam Richardson <simpleshot(a)gmail.com>wrote:

> On Wed, Aug 18, 2010 at 4:49 PM, Ashley Sheridan <ash(a)ashleysheridan.co.uk
> > wrote:
>
>> On Wed, 2010-08-18 at 13:45 -0700, Brian Dunning wrote:
>>
>> > I'm trying to write a VERY simple script that does nothing but store all
>> the submitted GET and POST vars in a string and echo it out.
>> >
>> > $response = print_r($_REQUEST, true);
>> > echo $response;
>> >
>> > The problem is it only shows GET vars. I've tried $POST instead of
>> $_REQUEST and it always gives an empty array. I've got it on two different
>> servers, and we have three guys trying various methods of submitting forms
>> to it, trying to eliminate all potential problems, like the possibility that
>> the request might not actually have any POST vars. I think we've safely
>> eliminated these possibilities.
>> >
>> > Can anyone see a reason why the above should not see POST vars? Is there
>> some security setting I don't know about?
>>
>>
>> Is there any code before the print_r() call, i.e. code that might be
>> setting it to an empty array?
>>
>> If not, then are you sure your form is definitely sending post
>> variables? It sounds a stupid question, but a small typo could be
>> sending the data as GET by accident. Firefox has a useful extension
>> called Firebug which might be able to show you the data being sent to
>> the browser. If you really need to bring out the big guns, then
>> Wireshark will show all the network traffic, including that sent from
>> your form to the server.
>>
>> Thanks,
>> Ash
>> http://www.ashleysheridan.co.uk
>>
>>
>>
> Check php.ini for this setting:
> variables_order
>
>
> --
> Nephtali: PHP web framework that functions beautifully
> http://nephtaliproject.com
>

And I suppose post_max_size could cause issues, too.

--
Nephtali: PHP web framework that functions beautifully
http://nephtaliproject.com
From: Ashley Sheridan on
On Wed, 2010-08-18 at 16:55 -0400, Adam Richardson wrote:

> On Wed, Aug 18, 2010 at 4:49 PM, Ashley Sheridan
> <ash(a)ashleysheridan.co.uk>wrote:
>
> > On Wed, 2010-08-18 at 13:45 -0700, Brian Dunning wrote:
> >
> > > I'm trying to write a VERY simple script that does nothing but store all
> > the submitted GET and POST vars in a string and echo it out.
> > >
> > > $response = print_r($_REQUEST, true);
> > > echo $response;
> > >
> > > The problem is it only shows GET vars. I've tried $POST instead of
> > $_REQUEST and it always gives an empty array. I've got it on two different
> > servers, and we have three guys trying various methods of submitting forms
> > to it, trying to eliminate all potential problems, like the possibility that
> > the request might not actually have any POST vars. I think we've safely
> > eliminated these possibilities.
> > >
> > > Can anyone see a reason why the above should not see POST vars? Is there
> > some security setting I don't know about?
> >
> >
> > Is there any code before the print_r() call, i.e. code that might be
> > setting it to an empty array?
> >
> > If not, then are you sure your form is definitely sending post
> > variables? It sounds a stupid question, but a small typo could be
> > sending the data as GET by accident. Firefox has a useful extension
> > called Firebug which might be able to show you the data being sent to
> > the browser. If you really need to bring out the big guns, then
> > Wireshark will show all the network traffic, including that sent from
> > your form to the server.
> >
> > Thanks,
> > Ash
> > http://www.ashleysheridan.co.uk
> >
> >
> >
> Check php.ini for this setting:
> variables_order
>
>


If the $_POST array appears empty in a print_r() statement, then the
variable order won't be the cause. It's more likely that the array is
being emptied before it gets to the print_r() or it is not being sent at
all.

Thanks,
Ash
http://www.ashleysheridan.co.uk


From: chris h on
Does $_SERVER['HTTP_METHOD'] show a GET or POST?

On Wed, Aug 18, 2010 at 4:58 PM, Adam Richardson <simpleshot(a)gmail.com>wrote:

> On Wed, Aug 18, 2010 at 4:55 PM, Adam Richardson <simpleshot(a)gmail.com
> >wrote:
>
> > On Wed, Aug 18, 2010 at 4:49 PM, Ashley Sheridan <
> ash(a)ashleysheridan.co.uk
> > > wrote:
> >
> >> On Wed, 2010-08-18 at 13:45 -0700, Brian Dunning wrote:
> >>
> >> > I'm trying to write a VERY simple script that does nothing but store
> all
> >> the submitted GET and POST vars in a string and echo it out.
> >> >
> >> > $response = print_r($_REQUEST, true);
> >> > echo $response;
> >> >
> >> > The problem is it only shows GET vars. I've tried $POST instead of
> >> $_REQUEST and it always gives an empty array. I've got it on two
> different
> >> servers, and we have three guys trying various methods of submitting
> forms
> >> to it, trying to eliminate all potential problems, like the possibility
> that
> >> the request might not actually have any POST vars. I think we've safely
> >> eliminated these possibilities.
> >> >
> >> > Can anyone see a reason why the above should not see POST vars? Is
> there
> >> some security setting I don't know about?
> >>
> >>
> >> Is there any code before the print_r() call, i.e. code that might be
> >> setting it to an empty array?
> >>
> >> If not, then are you sure your form is definitely sending post
> >> variables? It sounds a stupid question, but a small typo could be
> >> sending the data as GET by accident. Firefox has a useful extension
> >> called Firebug which might be able to show you the data being sent to
> >> the browser. If you really need to bring out the big guns, then
> >> Wireshark will show all the network traffic, including that sent from
> >> your form to the server.
> >>
> >> Thanks,
> >> Ash
> >> http://www.ashleysheridan.co.uk
> >>
> >>
> >>
> > Check php.ini for this setting:
> > variables_order
> >
> >
> > --
> > Nephtali: PHP web framework that functions beautifully
> > http://nephtaliproject.com
> >
>
> And I suppose post_max_size could cause issues, too.
>
> --
> Nephtali: PHP web framework that functions beautifully
> http://nephtaliproject.com
>
From: Brian Dunning on
This was the complete code of the page (this is the POST version not the REQUEST version):

<?php
$response = print_r($_POST, true);
echo $response;
?>

Returns an empty array no matter what POST vars are sent. We fixed it by changing it to this, which I've never even heard of, but so far is working perfectly:

<?php
$response = file_get_contents('php://input');
echo $response;
?>

I have no idea what the problem was. Thanks to everyone for your help.

From: "Daevid Vincent" on
You've got something jacked. DO NOT proceed with your coding using this
hack.

Put this in a blank file named whatever_you_want.php and hit it with your
web browser.

---------------------------------------------------------------------------
-----
<?php if ($_POST['action'] == 'Go') print_r($_POST); ?>

<form action="<?=$_SERVER['SCRIPT_NAME']?>" method="POST">
<select name="my_select">
<option value="foo">foo</option>
<option value="bar">bar</option>
</select>
<input type="submit" value="Go" name="action" class="button
submit"/>
</form>
---------------------------------------------------------------------------
-----

> -----Original Message-----
> From: Brian Dunning [mailto:brian(a)briandunning.com]
> Sent: Wednesday, August 18, 2010 2:23 PM
> To: PHP-General
> Subject: Re: [PHP] Can't read $_POST array
>
> This was the complete code of the page (this is the POST
> version not the REQUEST version):
>
> <?php
> $response = print_r($_POST, true);
> echo $response;
> ?>
>
> Returns an empty array no matter what POST vars are sent. We
> fixed it by changing it to this, which I've never even heard
> of, but so far is working perfectly:
>
> <?php
> $response = file_get_contents('php://input');
> echo $response;
> ?>
>
> I have no idea what the problem was. Thanks to everyone for your help.
>
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>