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:[EMAIL PROTECTED]] 
Sent: Wednesday, April 17, 2002 4:04 PM
To: [EMAIL PROTECTED]
Cc: [EMAIL PROTECTED]
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 <[EMAIL PROTECTED]>
To: "[ rswfire ]" <[EMAIL PROTECTED]>
CC: [EMAIL PROTECTED]
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 <[EMAIL PROTECTED]>
 > To: "[ rswfire ]" <[EMAIL PROTECTED]>
 > CC: [EMAIL PROTECTED]
 > 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




-- 
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to