From 0dc925f7f30c008c50f8fa801e90203b82cf0542 Mon Sep 17 00:00:00 2001 From: Rick Ellis Date: Thu, 2 Oct 2008 01:03:21 +0000 Subject: Added set_status_header function --- system/libraries/Output.php | 79 +++++++++++++++++++++++++++++++++------------ 1 file changed, 59 insertions(+), 20 deletions(-) (limited to 'system') diff --git a/system/libraries/Output.php b/system/libraries/Output.php index 2263fdfb9..781e368cb 100644 --- a/system/libraries/Output.php +++ b/system/libraries/Output.php @@ -122,39 +122,78 @@ class CI_Output { * @param string * @return void */ - function set_status_header($code, $text='') - { - if ( ! in_array($code, array(200, 304, 401, 404)) AND $text == '') + 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('You must submit a status message and a status code'); + show_error('Status codes must be numeric'); } - + + if (isset($stati[$code]) AND $text == '') + { + $text = $stati[$code]; + } + if ($text == '') { - switch($code) - { - case 200: $text = 'OK'; - break; - case 304: $text = 'Not Modified'; - break; - case 401: $text = 'Unauthorized'; - break; - case 404: $text = 'Not Found'; - break; - } + 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); + header("Status: {$code} {$text}", TRUE); } - elseif ($_SERVER['SERVER_PROTOCOL'] == 'HTTP/1.1' OR $_SERVER['SERVER_PROTOCOL'] == 'HTTP/1.0') + elseif ($server_protocol == 'HTTP/1.1' OR $server_protocol == 'HTTP/1.0') { - @header($_SERVER['SERVER_PROTOCOL']." {$code} {$text}", TRUE, $code); + header($server_protocol." {$code} {$text}", TRUE, $code); } else { - @header("HTTP/1.1 {$code} {$text}", TRUE, $code); + header("HTTP/1.1 {$code} {$text}", TRUE, $code); } } -- cgit v1.2.3-24-g4f1b