diff options
Diffstat (limited to 'framework/Web')
-rw-r--r-- | framework/Web/THttpRequest.php | 44 | ||||
-rw-r--r-- | framework/Web/THttpResponse.php | 30 |
2 files changed, 62 insertions, 12 deletions
diff --git a/framework/Web/THttpRequest.php b/framework/Web/THttpRequest.php index 6529fdae..142b5813 100644 --- a/framework/Web/THttpRequest.php +++ b/framework/Web/THttpRequest.php @@ -343,7 +343,7 @@ class THttpRequest extends TApplicationComponent implements IteratorAggregate,Ar */ public function getIsSecureConnection() { - return isset($_SERVER['HTTPS']) && strcasecmp($_SERVER['HTTPS'],'off'); + return isset($_SERVER['HTTPS']) && strcasecmp($_SERVER['HTTPS'],'off'); } /** @@ -371,6 +371,32 @@ class THttpRequest extends TApplicationComponent implements IteratorAggregate,Ar } /** + * @param integer|null Either {@link CASE_UPPER} or {@link CASE_LOWER} or as is null (default) + * @return array + */ + public function getHeaders($case=null) + { + static $result; + + if($result === null && function_exists('apache_request_headers')) { + $result = apache_request_headers(); + } + elseif($result === null) { + $result = array(); + foreach($_SERVER as $key=>$value) { + if(strncasecmp($key, 'HTTP_', 5) !== 0) continue; + $key = str_replace(' ','-', ucwords(strtolower(str_replace('_',' ', substr($key, 5))))); + $result[$key] = $value; + } + } + + if($case !== null) + return array_change_key_case($result, $case); + + return $result; + } + + /** * @return string part of that request URL after the host info (including pathinfo and query string) */ public function getRequestUri() @@ -455,14 +481,14 @@ class THttpRequest extends TApplicationComponent implements IteratorAggregate,Ar */ public function getBrowser() { - try - { - return get_browser(); - } - catch(TPhpErrorException $e) - { - throw new TConfigurationException('httprequest_browscap_required'); - } + try + { + return get_browser(); + } + catch(TPhpErrorException $e) + { + throw new TConfigurationException('httprequest_browscap_required'); + } } /** diff --git a/framework/Web/THttpResponse.php b/framework/Web/THttpResponse.php index 1f314dda..9ef55b76 100644 --- a/framework/Web/THttpResponse.php +++ b/framework/Web/THttpResponse.php @@ -476,10 +476,10 @@ class THttpResponse extends TModule implements ITextWriter {
Prado::trace("Flushing output",'System.Web.THttpResponse');
$this->ensureHeadersSent();
- if($this->_bufferOutput)
+ if($this->_bufferOutput)
{
// avoid forced send of http headers (ob_flush() does that) if there's no output yet
- if (ob_get_length()>0)
+ if (ob_get_length()>0)
{
if (!$continueBuffering)
{
@@ -569,6 +569,30 @@ class THttpResponse extends TModule implements ITextWriter }
/**
+ * @param integer|null Either {@link CASE_UPPER} or {@link CASE_LOWER} or as is null (default)
+ * @return array
+ */
+ public function getHeaders($case=null)
+ {
+ $result = array();
+ $headers = headers_list();
+ foreach($headers as $header) {
+ $tmp = explode(':', $header);
+ $key = trim(array_shift($tmp));
+ $value = trim(implode(':', $tmp));
+ if(isset($result[$key]))
+ $result[$key] .= ', ' . $value;
+ else
+ $result[$key] = $value;
+ }
+
+ if($case !== null)
+ return array_change_key_case($result, $case);
+
+ return $result;
+ }
+
+ /**
* Sends a header.
* @param string header
* @param boolean whether the header should replace a previous similar header, or add a second header of the same type
@@ -673,7 +697,7 @@ class THttpResponse extends TModule implements ITextWriter if($this->getHasAdapter())
return $this->_adapter->createNewHtmlWriter($type, $this);
else
- return $this->createNewHtmlWriter($type, $this);
+ return $this->createNewHtmlWriter($type, $this);
}
/**
|