Bug #64672 [Opn]: POST variables not received by custom 404
| From: | cmb@php.net | Date: | Fri, 03 Apr 2015 19:10:54 +0000 |
| Subject: | Bug #64672 [Opn]: POST variables not received by custom 404 | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-191807@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=64672&edit=1
ID: 64672
Updated by: cmb@php.net
Reported by: grassgrr at gmail dot com
Summary: POST variables not received by custom 404
Status: Open
Type: Bug
Package: Apache related
Operating System: Linux
PHP Version: 5.4.14
Block user comment: N
Private report: N
New Comment:
The provided 404.php test script is bogus, as $GLOBALS doesn't
contain any request variables as of PHP 5.4.0 (removal of
register_globals), anyway.
Furthermore the behavior depends on how the custom 404 page is
hooked. Using ErrorDocument with a fully qualified URL will cause a
redirection via the client, in which case the submitted data will
not be propagated.
FWIW, I tested the following 404.php (Windows 7, Apache 2.4.4,
mod_php, internal redirect):
<?php
var_dump($_SERVER['REQUEST_METHOD']);
var_dump($_SERVER['QUERY_STRING']);
var_dump(file_get_contents('php://input'));
var_dump($_REQUEST);
The results after submitting form.php:
string 'GET' (length=3)
string '' (length=0)
string 'test=Meow' (length=9)
array (size=0)
empty
These results appear to be buggy.
Previous Comments:
------------------------------------------------------------------------
[2014-03-05 20:42:41] narf at devilix dot net
It's not a PHP issue.
Apache just executes the 404.php in another process/thread (although this might be dependable on the
PHP SAPI being used, not sure). That process couldn't possibly have those vars, because they
were never sent to it.
You can use apache_note() to achieve what you want.
I'd say #38094 is the same issue.
------------------------------------------------------------------------
[2013-04-18 19:58:01] grassgrr at gmail dot com
Description:
------------
I am attempting to catch variables submitted with a form via POST method on a
custom 404 page on an apache server.
I have seen that IIS has a similar issue reported in bug #38094 that indicate the
problem there is one of Microsoft's IIS but this issue is occurring on a LAMP
stack so I am not completely sure if it is caused by PHP or a "feature" in Apache
that is also in IIS.
Test script:
---------------
// note that this test script is similar to that of bug #38094
form.php:
<form method="post" action="missingpage.php">
<input name="test" type="text" value="Meow">
<input type="submit">
</form>
Custom 404 page:
404.php:
<?php print_r($GLOBALS); ?>
Expected result:
----------------
I would expect to see all variables that exist printed including one post
variable named "test" with the value of "Meow" print on the custom 404 page.
Actual result:
--------------
All variables except for the Form variables print. Also $_SERVER['QUERY_STRING']
does not contain the query string used.
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=64672&edit=1