RE: [PHP] form posting to a fake page
| From: | Jaime Bozza | Date: | Wed, 17 Apr 2002 21:59:47 +0000 |
| Subject: | RE: [PHP] form posting to a fake page | ||
| References: | 1 | Groups: | php.dev |
| Request: | Send a blank email to php-dev+get-82966@lists.php.net to get a copy of this message | ||
I've done some testing, and it seems that Apache messes with the server
variables when it sends the error document.
Basically, Apache does *NOT* send an HTTP 302 response. It sends an
HTTP 404 response, but outputs the full code from the ErrorDocument.
Unfortunately, it changes the REQUEST_METHOD from "POST" to "GET".
Also, it creates the following:
REDIRECT_ERROR_NOTES
REDIRECT_REQUEST_METHOD
REDIRECT_STATUS
REDIRECT_URL
(See http://httpd.apache.org/docs/custom-error.html
for more information
on the variables)
REDIRECT_REQUEST_METHOD contains POST. Also, CONTENT_TYPE is *still*
"application/x-www-form-urlencoded" and CONTENT_LENGTH still equals the
size of the POST data, so the data *IS* still being sent, though PHP is
most likely ignoring the data since the method does not equal POST.
Can anyone from the development team verify this? (CC'ing to php-dev in
a separate email so additional comments don't get CC'd as well)
If this is the case, this may be a good one for a feature request.
If not, using the RewriteEngine may be your only choice.
(Looking in /main/main.c, it seems that POST data *is* only parsed when
REQUEST_METHOD=POST, so it may end up only being a single line patch)
Let us know if you plan on requesting a new feature.
Jaime Bozza
-----Original Message-----
From: [ rswfire ] [mailto:rswfire@hotmail.com]
Sent: Wednesday, April 17, 2002 4:04 PM
To: mnc@stoic.net
Cc: php-general@lists.php.net
Subject: Re: [PHP] form posting to a fake page
No, the error handler does not have access to the posted data. The
problem
in a nutshell:
1. Person fills out form; clicks submit
2. Form action property is called; server notices the page is not real
(Data is lost here)
3. Error handler is called
----Original Message Follows----
From: Miguel Cruz <mnc@stoic.net>
To: "[ rswfire ]" <rswfire@hotmail.com>
CC: php-general@lists.php.net
Subject: Re: [PHP] form posting to a fake page
Date: Wed, 17 Apr 2002 16:00:17 -0500 (CDT)
Your error handler would read them and then construct a redirect
containing the form data in querystring format.
miguel
On Wed, 17 Apr 2002, [ rswfire ] wrote:
> $_POST[] variables do not exist on a redirected page; that's the
problem!
>
> ----Original Message Follows----
> From: Miguel Cruz <mnc@stoic.net>
> To: "[ rswfire ]" <rswfire@hotmail.com>
> CC: php-general@lists.php.net
> Subject: Re: [PHP] form posting to a fake page
> Date: Wed, 17 Apr 2002 15:56:32 -0500 (CDT)
>
> On Wed, 17 Apr 2002, [ rswfire ] wrote:
> > It would still require some knowledge of the posted data. If
someone
> clicks
> > a submit button, and it is posting to a page that doesn't really
exist,
> then
> > when the index.php file gets called as a 404 errordocument, the
posted
> > variables are already lost, so it wouldn't be possible to access
the
> posted
> > variables in any fashion. The only possibility might be if Apache
had
> some
> > way of dealing with this scenario and I am not that familiar with
how
> Apache
> > works. And so, that leaves me with the only workaround I do know,
post
> to a
> > page that does exist! It's just not the ideal solution, but it
works.
>
> Well, depending on the quantity of posted data, you could go through
> $_POST[] and turn them into GET args and pass them along to the
> appropriate page (not that I really understand what you're trying to
do).
>
> miguel
>
>
>
>
>
> _________________________________________________________________
> Chat with friends online, try MSN Messenger:
> http://messenger.msn.com
>
>
_________________________________________________________________
Send and receive Hotmail on your mobile device: http://mobile.msn.com
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php