summaryrefslogtreecommitdiffstats
path: root/system/core/URI.php
diff options
context:
space:
mode:
authorAndrey Andreev <narf@bofh.bg>2012-06-14 01:27:25 +0200
committerAndrey Andreev <narf@bofh.bg>2012-06-14 01:27:25 +0200
commitd461934184d95b0cfb2feec93f27b621ef72a5c2 (patch)
tree26ffc1a3885fff5563f973d8b068994b441854e1 /system/core/URI.php
parentaf915ce01e4e5424a7a4ea67e4e3018a40752a89 (diff)
Fix issue #10 + URI class speed improvements
Diffstat (limited to 'system/core/URI.php')
-rw-r--r--system/core/URI.php20
1 files changed, 12 insertions, 8 deletions
diff --git a/system/core/URI.php b/system/core/URI.php
index a575bc36e..2e661ed4c 100644
--- a/system/core/URI.php
+++ b/system/core/URI.php
@@ -119,7 +119,7 @@ class CI_URI {
}
// No PATH_INFO?... What about QUERY_STRING?
- $path = (isset($_SERVER['QUERY_STRING'])) ? $_SERVER['QUERY_STRING'] : @getenv('QUERY_STRING');
+ $path = isset($_SERVER['QUERY_STRING']) ? $_SERVER['QUERY_STRING'] : @getenv('QUERY_STRING');
if (trim($path, '/') !== '')
{
$this->_set_uri_string($path);
@@ -163,7 +163,7 @@ class CI_URI {
* @param string
* @return void
*/
- public function _set_uri_string($str)
+ protected function _set_uri_string($str)
{
// Filter out control characters
$str = remove_invisible_characters($str, FALSE);
@@ -177,8 +177,8 @@ class CI_URI {
/**
* Detects the URI
*
- * This function will detect the URI automatically and fix the query string
- * if necessary.
+ * This function will detect the URI automatically
+ * and fix the query string if necessary.
*
* @return string
*/
@@ -189,7 +189,6 @@ class CI_URI {
return '';
}
- $uri = $_SERVER['REQUEST_URI'];
if (strpos($uri, $_SERVER['SCRIPT_NAME']) === 0)
{
$uri = substr($uri, strlen($_SERVER['SCRIPT_NAME']));
@@ -198,14 +197,19 @@ class CI_URI {
{
$uri = substr($uri, strlen(dirname($_SERVER['SCRIPT_NAME'])));
}
+ else
+ {
+ $uri = $_SERVER['REQUEST_URI'];
+ }
// This section ensures that even on servers that require the URI to be in the query string (Nginx) a correct
// URI is found, and also fixes the QUERY_STRING server var and $_GET array.
- if (strncmp($uri, '?/', 2) === 0)
+ if (strpos($uri, '?/') === 0)
{
$uri = substr($uri, 2);
}
- $parts = preg_split('#\?#i', $uri, 2);
+
+ $parts = explode('?', $uri, 2);
$uri = $parts[0];
if (isset($parts[1]))
{
@@ -223,7 +227,7 @@ class CI_URI {
return '/';
}
- $uri = parse_url($uri, PHP_URL_PATH);
+ $uri = parse_url('pseudo://hostname/'.$uri, PHP_URL_PATH);
// Do some final cleaning of the URI and return it
return str_replace(array('//', '../'), '/', trim($uri, '/'));