note 56978 added to function.override-function
| From: | rojaro at gmail dot com | Date: | Tue, 20 Sep 2005 19:13:09 +0000 |
| Subject: | note 56978 added to function.override-function | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-95498@lists.php.net to get a copy of this message | ||
Since Apache 1 & 2 use diffrent methods (Unicode vs. UTF8) on Win32 platforms to encode urls,
i've implemented the following workaround to get around this "bug" (which is actually
known behaviour and wont get fixed). This workaround is really usefull when writing PHP scripts
which have to work on all platforms (Windows, Linux, BSD etc.), must process URLs and must work
under both Apache versions.
<?php
$httpd = explode(' ', $_SERVER['SERVER_SOFTWARE']);
if(substr($httpd[0], 0, 6)=='Apache' && substr($httpd[0], 7, 1)==2 &&
$httpd[1]=='(Win32)')
{
if(isset($_SERVER['REQUEST_URI'])) $_SERVER['REQUEST_URI'] =
str_replace('%2F', '/',
rawurlencode(utf8_decode(rawurldecode($_SERVER['REQUEST_URI']))));
if(isset($_SERVER['REDIRECT_URL'])) $_SERVER['REDIRECT_URL'] =
str_replace('%2F', '/',
rawurlencode(utf8_decode(rawurldecode($_SERVER['REDIRECT_URL']))));
override_function('urlencode', '$url', 'return
str_replace("%2F", "/", rawurlencode(utf8_encode($url)));');
}
?>
----
Manual Page -- http://www.php.net/manual/en/function.override-function.php
Edit -- http://master.php.net/manage/user-notes.php?action=edit+56978
Delete: added to the manual -- http://master.php.net/manage/user-notes.php?action=delete+56978&report=yes&reason=added+to+the+manual
Delete: bad code -- http://master.php.net/manage/user-notes.php?action=delete+56978&report=yes&reason=bad+code
Delete: spam -- http://master.php.net/manage/user-notes.php?action=delete+56978&report=yes&reason=spam
Delete: useless -- http://master.php.net/manage/user-notes.php?action=delete+56978&report=yes&reason=useless
Delete: non-english -- http://master.php.net/manage/user-notes.php?action=delete+56978&report=yes&reason=non-english
Delete: already in docs -- http://master.php.net/manage/user-notes.php?action=delete+56978&report=yes&reason=already+in+docs
Delete: other reasons -- http://master.php.net/manage/user-notes.php?action=delete+56978&report=yes
Reject -- http://master.php.net/manage/user-notes.php?action=reject+56978&report=yes
Search -- http://master.php.net/manage/user-notes.php