ID: 38094 Updated by: [EMAIL PROTECTED] Reported By: mdcore at gmail dot com -Status: Open +Status: Bogus Bug Type: IIS related Operating System: win32 PHP Version: 5.1.4 New Comment:
It's hard for PHP to mangle those variables since it sets them to whatever IIS says them to be. So obviously you can't POST to custom 404 anymore. You should use $_REQUEST to refer to variables passed in such cases where you can't be sure where they come from. ;) IIS bugs are not PHP bugs -> bogus. Previous Comments: ------------------------------------------------------------------------ [2006-09-18 20:41:27] dangos at gmail dot com I have confimed this issue, and it _is_ a PHP bug. When presented with an HTTP POST through an IIS 6 custom error handler, PHP receives the raw POST data into php://input, but fails to parse it into $_POST etc. For comparison, ASP scripts do receive POST variables from IIS 6 custom error handlers, whereas PHP scripts do not. PHP also mangles $_SERVER['QUERY_STRING'] and $_GET and incorrectly reports $_SERVER['REQUEST_METHOD'] as 'GET' in this situation. I can suggest that the likely reason for the above problems is that when presenting a custom error to a script ISAPI filter IIS6 prepends the error status code to the beginning of the URL (e.g. 404;http://www.example.com/) - this odd format is possibly causing confusion when PHP attempts to process the server variables. ------------------------------------------------------------------------ [2006-07-13 12:57:46] mdcore at gmail dot com Thanks for responding so quickly Tony! I think it is a bug in the PHP ISAPI filter because if I use a custom 404 ASP page then the POST variables do come through. It's only with PHP pages that it does not work. ------------------------------------------------------------------------ [2006-07-13 12:53:30] [EMAIL PROTECTED] It clearly DOES pass them, as you said it yourself: >this works in IIS5 but not in IIS6. Please report it to Microsoft. ------------------------------------------------------------------------ [2006-07-13 12:47:44] mdcore at gmail dot com Why is the PHP ISAPI filter not passing the POST variables to the script? ------------------------------------------------------------------------ [2006-07-13 12:38:08] mdcore at gmail dot com Description: ------------ I'm using a custom 404 page in IIS to handle a form of mod_rewrite. But if I post a form then the custom 404 does not get the POST variables. this works in IIS5 but not in IIS6. Reproduce code: --------------- formtest.php: <form method="post" action="non_existant_page.abc"> <input name="test" type="text" value="some stuff" /> <input type="submit" /> </form> Set this up as a custom 404 page in IIS. custom404.php: <pre><? print_r($GLOBALS); ?></pre> Expected result: ---------------- non-empty _FORM and REQUEST_METHOD of POST Actual result: -------------- empty _FORM and REQUEST_METHOD of GET ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=38094&edit=1
