summaryrefslogtreecommitdiffstats
path: root/system/libraries
diff options
context:
space:
mode:
authorDerek Jones <derek.jones@ellislab.com>2009-07-11 19:05:58 +0200
committerDerek Jones <derek.jones@ellislab.com>2009-07-11 19:05:58 +0200
commit817163a1bcff02285f763bcf72ff02e86f218cf8 (patch)
treeca429f1c3b2acc8d72e97e6269ca3cdb5598f95b /system/libraries
parent55acc8b4d980c43e4bde04f0e0b99a594dea28ff (diff)
Modified show_error() to allow sending of HTTP server response codes.
Added set_status_header() to the Common functions to allow use when the Output class is unavailable. Fixed a bug where the 400 status header sent with the 'disallowed URI characters' was not compatible with CGI environments.
Diffstat (limited to 'system/libraries')
-rw-r--r--system/libraries/Exceptions.php4
-rw-r--r--system/libraries/Output.php75
-rw-r--r--system/libraries/URI.php3
3 files changed, 7 insertions, 75 deletions
diff --git a/system/libraries/Exceptions.php b/system/libraries/Exceptions.php
index 902b574fc..1f99d01c3 100644
--- a/system/libraries/Exceptions.php
+++ b/system/libraries/Exceptions.php
@@ -113,8 +113,10 @@ class CI_Exceptions {
* @param string the template name
* @return string
*/
- function show_error($heading, $message, $template = 'error_general')
+ function show_error($heading, $message, $template = 'error_general', $status_code = 500)
{
+ set_status_header($status_code);
+
$message = '<p>'.implode('</p><p>', ( ! is_array($message)) ? array($message) : $message).'</p>';
if (ob_get_level() > $this->ob_level + 1)
diff --git a/system/libraries/Output.php b/system/libraries/Output.php
index 6bfb9c7eb..4423ac726 100644
--- a/system/libraries/Output.php
+++ b/system/libraries/Output.php
@@ -116,7 +116,8 @@ class CI_Output {
/**
* Set HTTP Status Header
- *
+ * moved to Common procedural functions in 1.7.2
+ *
* @access public
* @param int the status code
* @param string
@@ -124,77 +125,7 @@ class CI_Output {
*/
function set_status_header($code = '200', $text = '')
{
- $stati = array(
- '200' => 'OK',
- '201' => 'Created',
- '202' => 'Accepted',
- '203' => 'Non-Authoritative Information',
- '204' => 'No Content',
- '205' => 'Reset Content',
- '206' => 'Partial Content',
-
- '300' => 'Multiple Choices',
- '301' => 'Moved Permanently',
- '302' => 'Found',
- '304' => 'Not Modified',
- '305' => 'Use Proxy',
- '307' => 'Temporary Redirect',
-
- '400' => 'Bad Request',
- '401' => 'Unauthorized',
- '403' => 'Forbidden',
- '404' => 'Not Found',
- '405' => 'Method Not Allowed',
- '406' => 'Not Acceptable',
- '407' => 'Proxy Authentication Required',
- '408' => 'Request Timeout',
- '409' => 'Conflict',
- '410' => 'Gone',
- '411' => 'Length Required',
- '412' => 'Precondition Failed',
- '413' => 'Request Entity Too Large',
- '414' => 'Request-URI Too Long',
- '415' => 'Unsupported Media Type',
- '416' => 'Requested Range Not Satisfiable',
- '417' => 'Expectation Failed',
-
- '500' => 'Internal Server Error',
- '501' => 'Not Implemented',
- '502' => 'Bad Gateway',
- '503' => 'Service Unavailable',
- '504' => 'Gateway Timeout',
- '505' => 'HTTP Version Not Supported'
- );
-
- if ($code == '' OR ! is_numeric($code))
- {
- show_error('Status codes must be numeric');
- }
-
- if (isset($stati[$code]) AND $text == '')
- {
- $text = $stati[$code];
- }
-
- if ($text == '')
- {
- show_error('No status text available. Please check your status code number or supply your own message text.');
- }
-
- $server_protocol = (isset($_SERVER['SERVER_PROTOCOL'])) ? $_SERVER['SERVER_PROTOCOL'] : FALSE;
-
- if (substr(php_sapi_name(), 0, 3) == 'cgi')
- {
- header("Status: {$code} {$text}", TRUE);
- }
- elseif ($server_protocol == 'HTTP/1.1' OR $server_protocol == 'HTTP/1.0')
- {
- header($server_protocol." {$code} {$text}", TRUE, $code);
- }
- else
- {
- header("HTTP/1.1 {$code} {$text}", TRUE, $code);
- }
+ set_status_header($code, $text);
}
// --------------------------------------------------------------------
diff --git a/system/libraries/URI.php b/system/libraries/URI.php
index f09a5cd7c..efc7a18b3 100644
--- a/system/libraries/URI.php
+++ b/system/libraries/URI.php
@@ -188,8 +188,7 @@ class CI_URI {
{
if ( ! preg_match("|^[".preg_quote($this->config->item('permitted_uri_chars'))."]+$|i", $str))
{
- header('HTTP/1.1 400 Bad Request');
- show_error('The URI you submitted has disallowed characters.');
+ show_error('The URI you submitted has disallowed characters.', 400);
}
}