From adc3ea746a7853859d1e17cf60550992ccba011a Mon Sep 17 00:00:00 2001 From: pdontthink Date: Tue, 24 Mar 2020 20:12:42 +0000 Subject: [PATCH] Cache $PHP_SELF value, add ability to make custom changes to $PHP_SELF by putting $php_self_pattern and $php_self_replacement in config/config_local.php git-svn-id: https://svn.code.sf.net/p/squirrelmail/code/trunk/squirrelmail@14850 7612ce4b-ef26-0410-bec9-ea0150e637f0 --- functions/global.php | 11 ++++++++--- functions/strings.php | 7 +------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/functions/global.php b/functions/global.php index 393069a..ce847df 100644 --- a/functions/global.php +++ b/functions/global.php @@ -697,9 +697,11 @@ if (!function_exists('session_regenerate_id')) { * @return string The path, filename and any arguments for the * current script */ -function php_self() { +function php_self($with_query_string=TRUE) { - $request_uri = ''; + static $request_uri = ''; + if (!empty($request_uri)) + return ($with_query_string ? $request_uri : (strpos($request_uri, '?') !== FALSE ? substr($request_uri, 0, strpos($request_uri, '?')) : $request_uri)); // first try $_SERVER['PHP_SELF'], which seems most reliable // (albeit it usually won't include the query string) @@ -733,7 +735,10 @@ function php_self() { $request_uri .= '?' . $query_string; } - return $request_uri; + global $php_self_pattern, $php_self_replacement; + if (!empty($php_self_pattern)) + $request_uri = preg_replace($php_self_pattern, $php_self_replacement, $request_uri); + return ($with_query_string ? $request_uri : (strpos($request_uri, '?') !== FALSE ? substr($request_uri, 0, strpos($request_uri, '?')) : $request_uri)); } diff --git a/functions/strings.php b/functions/strings.php index ddb13b2..9e295df 100644 --- a/functions/strings.php +++ b/functions/strings.php @@ -474,12 +474,7 @@ function get_location () { $is_secure_connection, $sq_ignore_http_x_forwarded_headers; /* Get the path, handle virtual directories */ - if(strpos(php_self(), '?')) { - $path = substr(php_self(), 0, strpos(php_self(), '?')); - } else { - $path = php_self(); - } - $path = substr($path, 0, strrpos($path, '/')); + $path = substr(php_self(FALSE), 0, strrpos(php_self(FALSE), '/')); // proto+host+port are already set in config: if ( !empty($config_location_base) ) { -- 1.9.1