diff options
author | Derek Jones <derek.jones@ellislab.com> | 2009-07-11 19:05:58 +0200 |
---|---|---|
committer | Derek Jones <derek.jones@ellislab.com> | 2009-07-11 19:05:58 +0200 |
commit | 817163a1bcff02285f763bcf72ff02e86f218cf8 (patch) | |
tree | ca429f1c3b2acc8d72e97e6269ca3cdb5598f95b /system/libraries | |
parent | 55acc8b4d980c43e4bde04f0e0b99a594dea28ff (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.php | 4 | ||||
-rw-r--r-- | system/libraries/Output.php | 75 | ||||
-rw-r--r-- | system/libraries/URI.php | 3 |
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); } } |