* @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)
$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));
}
$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) ) {