diff options
Diffstat (limited to 'system')
-rw-r--r-- | system/libraries/Output.php | 79 |
1 files changed, 59 insertions, 20 deletions
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);
}
}
|