Bug #62086 [Com]: header() in 404 error page

From: Date: Tue, 22 May 2012 07:25:47 +0000
Subject: Bug #62086 [Com]: header() in 404 error page
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-170663@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=62086&edit=1

 ID:                 62086
 Comment by:         dave dot kimble at gmx dot com
 Reported by:        dave dot kimble at gmx dot com
 Summary:            header() in 404 error page
 Status:             Open
 Type:               Bug
 Package:            Other web server
 Operating System:   Win 7 Ult 32
 PHP Version:        5.4.3
 Block user comment: N
 Private report:     N

 New Comment:

OK, I can confirm this is not a PHP bug, but an IQWebFTPServer bug:
IQ doesn't pre-process error pages.
Thanks.
CLOSED


Previous Comments:
------------------------------------------------------------------------
[2012-05-21 08:39:45] anon at anon dot anon

It looks like your error page is not configured to be interpreted as PHP, so everything from
<?php to BR> is interpreted by the browser as a single HTML tag. Also the URL in your exit
statement should be passed through htmlspecialchars to avoid an XSS vulnerability.

------------------------------------------------------------------------
[2012-05-21 07:14:02] dave dot kimble at gmx dot com

Description:
------------
I am trying to redirect all external links to pages in 
http://www.*******.org.au/dave.kimble/ 
to http://www.davekimble.org.au/ 
by using header() in 404 error page.
Fastream IQWebFTPServer v11.5.5R possibly implicated.

If header() follows echo(), I expect error "headers already written".
Adding echo statements to debug, the output either doesn't appear, or after <BR> output
is the remaining script itself. 

Same problem with PHP 5.4.0

Test script:
---------------
Must be set in web server as Error Page 404

<?php
// error page for 404
$uri = $_SERVER['REQUEST_URI'];
if (substr($uri, 0, 12 ) == '/dave.kimble' )
{	$restofuri = substr($uri, 12 );
	header('Location: http://www.davekimble.org.au'.$restofuri
);
	exit('Redirecting you to http://www.davekimble.org.au'.$restofuri);
}
echo ($uri . ' not found<BR>');
?>


Expected result:
----------------
a) Browser URL: http://test-domain.com/dave.kimble/index.htm
   should return page http://www.davekimble.org.au/index.htm 
b) Browser URL: http://test-domain.com/xxxx.xxx
   should return "/xxxx.xxx not found"

Actual result:
--------------
a) Browser URL: http://test-domain.com/dave.kimble/index.htm
   returns blank page and response status 404
b) Browser URL: http://test-domain.com/xxxx.xxx
   returns '); ?> 
   which is the tail end of the script !


------------------------------------------------------------------------



-- 
Edit this bug report at https://bugs.php.net/bug.php?id=62086&edit=1


Thread (4 messages)

« previous php.bugs (#170663) next »