Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'core/Url.php')
-rw-r--r--core/Url.php131
1 files changed, 36 insertions, 95 deletions
diff --git a/core/Url.php b/core/Url.php
index cc6164ac26..7ba48bbc99 100644
--- a/core/Url.php
+++ b/core/Url.php
@@ -1,11 +1,11 @@
<?php
/**
* Piwik - Open source web analytics
- *
+ *
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html Gpl v3 or later
* @version $Id$
- *
+ *
* @category Piwik
* @package Piwik
*/
@@ -26,12 +26,11 @@ class Piwik_Url
*/
static public function getCurrentUrl()
{
- return self::getCurrentScheme() . '://'
- . self::getCurrentHost()
- . self::getCurrentScriptName()
- . self::getCurrentQueryString();
+ return self::getCurrentHost()
+ . self::getCurrentScriptName()
+ . self::getCurrentQueryString();
}
-
+
/**
* If current URL is "http://example.org/dir1/dir2/index.php?param1=value1&param2=value2"
* will return "http://example.org/dir1/dir2/index.php"
@@ -40,11 +39,10 @@ class Piwik_Url
*/
static public function getCurrentUrlWithoutQueryString()
{
- return self::getCurrentScheme() . '://'
- . self::getCurrentHost()
- . self::getCurrentScriptName();
+ return self::getCurrentHost()
+ . self::getCurrentScriptName() ;
}
-
+
/**
* If current URL is "http://example.org/dir1/dir2/index.php?param1=value1&param2=value2"
* will return "http://example.org/dir1/dir2/"
@@ -53,9 +51,9 @@ class Piwik_Url
*/
static public function getCurrentUrlWithoutFileName()
{
- return self::getCurrentScheme() . '://'
- . self::getCurrentHost()
- . self::getCurrentScriptPath();
+ $host = self::getCurrentHost();
+ $urlDir = self::getCurrentScriptPath();
+ return $host.$urlDir;
}
/**
@@ -78,7 +76,7 @@ class Piwik_Url
}
return $urlDir;
}
-
+
/**
* If current URL is "http://example.org/dir1/dir2/index.php?param1=value1&param2=value2"
* will return "/dir1/dir2/index.php"
@@ -108,56 +106,41 @@ class Piwik_Url
{
$url = $_SERVER['SCRIPT_NAME'];
}
-
- if($url[0] !== '/')
- {
- $url = '/' . $url;
- }
return $url;
}
/**
- * If the current URL is 'http://example.org/dir1/dir2/index.php?param1=value1&param2=value2"
- * will return 'http'
+ * If current URL is "http://example.org/dir1/dir2/index.php?param1=value1&param2=value2"
+ * will return "http://example.org"
*
- * @return string 'https' or 'http'
+ * @return string
*/
- static public function getCurrentScheme()
+ static public function getCurrentHost()
{
if(isset($_SERVER['HTTPS'])
- && ($_SERVER['HTTPS'] == 'on' || $_SERVER['HTTPS'] === true)
+ && ($_SERVER['HTTPS'] == 'on' || $_SERVER['HTTPS'] === true)
)
{
- $scheme = 'https';
+ $url = 'https';
}
- else
+ else
{
- $scheme = 'http';
+ $url = 'http';
}
- return $scheme;
- }
-
- /**
- * If current URL is "http://example.org/dir1/dir2/index.php?param1=value1&param2=value2"
- * will return "http://example.org"
- *
- * @return string
- */
- static public function getCurrentHost()
- {
- if (!empty($_SERVER['HTTP_X_FORWARDED_HOST']))
+
+ $url .= '://';
+
+ if(isset($_SERVER['HTTP_HOST']))
{
- return Piwik_Common::getFirstIpFromList($_SERVER['HTTP_X_FORWARDED_HOST']);
+ $url .= $_SERVER['HTTP_HOST'];
}
-
- if(isset($_SERVER['HTTP_HOST']))
+ else
{
- return $_SERVER['HTTP_HOST'];
+ $url .= 'unknown';
}
-
- return 'unknown';
+ return $url;
}
-
+
/**
* If current URL is "http://example.org/dir1/dir2/index.php?param1=value1&param2=value2"
* will return "?param1=value1&param2=value2"
@@ -174,7 +157,7 @@ class Piwik_Url
}
return $url;
}
-
+
/**
* If current URL is "http://example.org/dir1/dir2/index.php?param1=value1&param2=value2"
* will return
@@ -190,7 +173,7 @@ class Piwik_Url
$urlValues = Piwik_Common::getArrayFromQueryString($queryString);
return $urlValues;
}
-
+
/**
* Given an array of name-values, it will return the current query string
* with the new requested parameter key-values;
@@ -213,7 +196,7 @@ class Piwik_Url
}
return '';
}
-
+
/**
* Given an array of parameters name->value, returns the query string.
* Also works with array values using the php array syntax for GET parameters.
@@ -245,7 +228,7 @@ class Piwik_Url
$query = substr($query, 0, -1);
return $query;
}
-
+
/**
* Redirects the user to the Referer if found.
* If the user doesn't have a referer set, it redirects to the current URL without query string.
@@ -259,7 +242,7 @@ class Piwik_Url
}
self::redirectToUrl(self::getCurrentUrlWithoutQueryString());
}
-
+
/**
* Redirects the user to the specified URL
*
@@ -270,7 +253,7 @@ class Piwik_Url
header("Location: $url");
exit;
}
-
+
/**
* Returns the HTTP_REFERER header, false if not found.
*
@@ -284,46 +267,4 @@ class Piwik_Url
}
return false;
}
-
- /**
- * Is the URL on the same host and in the same script path?
- *
- * @param string $url
- * @return bool True if local; false otherwise.
- */
- static public function isLocalUrl($url)
- {
- // handle case-sensitivity differences
- $pathContains = strtoupper(substr(PHP_OS, 0, 3)) == 'WIN' ? 'stripos' : 'strpos';
-
- // test the scheme/protocol portion of the reconstructed "current" URL
- if(stripos($url, 'http://') === 0 || stripos($url, 'https://') === 0)
- {
- // determine the offset to begin the comparison
- $offset = strpos($url, '://');
- $current = strstr(self::getCurrentUrlWithoutFileName(), '://');
- if($pathContains($url, $current, $offset) === $offset)
- {
- return true;
- }
- }
-
- return false;
- }
-
- /**
- * Get local referer, i.e., on the same host and in the same script path.
- *
- * @return string|false
- */
- static public function getLocalReferer()
- {
- // verify that the referer contains the current URL (minus the filename & query parameters), http://example.org/dir1/dir2/
- $referer = self::getReferer();
- if($referer !== false && self::isLocalUrl($referer)) {
- return $referer;
- }
-
- return false;
- }
}