summaryrefslogtreecommitdiff
path: root/framework
diff options
context:
space:
mode:
Diffstat (limited to 'framework')
-rw-r--r--framework/Web/THttpRequest.php18
-rw-r--r--framework/Web/THttpResponse.php5
2 files changed, 21 insertions, 2 deletions
diff --git a/framework/Web/THttpRequest.php b/framework/Web/THttpRequest.php
index 4e04ecca..b908db53 100644
--- a/framework/Web/THttpRequest.php
+++ b/framework/Web/THttpRequest.php
@@ -259,7 +259,7 @@ class THttpRequest extends TApplicationComponent implements IteratorAggregate,Ar
*/
public function getIsSecureConnection()
{
- return !empty($_SERVER['HTTPS']);
+ return isset($_SERVER['HTTPS']) && strcasecmp($_SERVER['HTTPS'],'off');
}
/**
@@ -287,6 +287,14 @@ class THttpRequest extends TApplicationComponent implements IteratorAggregate,Ar
}
/**
+ * @return string schema and hostname of the requested URL
+ */
+ public function getBaseUrl()
+ {
+ return ($this->getIsSecureConnection() ? "https://" : "http://") . $_SERVER ['HTTP_HOST'];
+ }
+
+ /**
* @return string entry script URL (w/o host part)
*/
public function getApplicationUrl()
@@ -295,6 +303,14 @@ class THttpRequest extends TApplicationComponent implements IteratorAggregate,Ar
}
/**
+ * @return string entry script URL (w/ host part)
+ */
+ public function getAbsoluteApplicationUrl()
+ {
+ return $this->getBaseUrl() . $this->getApplicationUrl();
+ }
+
+ /**
* @return string application entry script file path (processed w/ realpath())
*/
public function getApplicationFilePath()
diff --git a/framework/Web/THttpResponse.php b/framework/Web/THttpResponse.php
index 5a3ff99d..f455f48d 100644
--- a/framework/Web/THttpResponse.php
+++ b/framework/Web/THttpResponse.php
@@ -274,12 +274,15 @@ class THttpResponse extends TModule implements ITextWriter
/**
* Redirects the browser to the specified URL.
* The current application will be terminated after this method is invoked.
- * @param string URL to be redirected to
+ * @param string URL to be redirected to. If the URL is a relative one, the base URL of
+ * the current request will be inserted at the beginning.
*/
public function redirect($url)
{
if(!$this->getApplication()->getRequestCompleted())
$this->getApplication()->onEndRequest();
+ if($url[0]==='/')
+ $url=$this->getRequest()->getBaseUrl().$url;
header('Location:'.$url);
exit();
}