Commit ea7224fb authored by Dries's avatar Dries
Browse files

- Patch #87310 by dfaulkner and Grugnog2: fix borken request_uri() on some systems.

parent 8c020c07
......@@ -515,20 +515,30 @@ function check_plain($text) {
}
/**
* Since $_SERVER['REQUEST_URI'] is only available on Apache, we
* generate an equivalent using other environment variables.
* The value of $_SERVER['REQUEST_URI'] is inconsistent between various
* web servers (Apache, IIS, iPlanet, etc.).
*
* For those cases where REQUEST_URI is provided, we inspect it to be sure
* that it contains the QUERY_STRING as well as the actual REQUEST_URI.
*
* Where this value is not available we generate an equivalent using other
* environment variables.
*/
function request_uri() {
if (isset($_SERVER['REQUEST_URI'])) {
$uri = $_SERVER['REQUEST_URI'];
}
else {
if (isset($_SERVER['argv'])) {
$uri = $_SERVER['PHP_SELF'] .'?'. $_SERVER['argv'][0];
static $uri;
if (!isset($uri)) {
// If we have a REQUEST_URI and the query string is present in it, we use the value directly.
if (isset($_SERVER['REQUEST_URI']) && !empty($_SERVER['QUERY_STRING']) && strpos($_SERVER['REQUEST_URI'], $_SERVER['QUERY_STRING'])) {
$uri = $_SERVER['REQUEST_URI'];
}
else {
$uri = $_SERVER['PHP_SELF'] .'?'. $_SERVER['QUERY_STRING'];
// Generate an equivalent.
if (isset($_SERVER['argv'])) {
$uri = $_SERVER['PHP_SELF'] .'?'. $_SERVER['argv'][0];
}
else {
$uri = $_SERVER['PHP_SELF'] .'?'. $_SERVER['QUERY_STRING'];
}
}
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment