note 116539 added to function.http-response-code
| From: | () | Date: | Tue, 20 Jan 2015 04:59:04 +0000 |
| Subject: | note 116539 added to function.http-response-code | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-201469@lists.php.net to get a copy of this message | ||
@craig at craigfrancis dot co dot uk@ wrote the function that replaces the original. It is very
usefull, but has a bug. The original http_response_code always returns the previous or current code,
not the code you are setting now. Here is my fixed version. I also use $GLOBALS to store the current
code, but trigger_error() instead of exit. So now, how the function will behave in the case of error
lies on the error handler. Or you can change it back to exit().
if (!function_exists('http_response_code')) {
function http_response_code($code = NULL) {
$prev_code = (isset($GLOBALS['http_response_code']) ?
$GLOBALS['http_response_code'] : 200);
if ($code === NULL) {
return $prev_code;
}
switch ($code) {
case 100: $text = 'Continue'; break;
case 101: $text = 'Switching Protocols'; break;
case 200: $text = 'OK'; break;
case 201: $text = 'Created'; break;
case 202: $text = 'Accepted'; break;
case 203: $text = 'Non-Authoritative Information'; break;
case 204: $text = 'No Content'; break;
case 205: $text = 'Reset Content'; break;
case 206: $text = 'Partial Content'; break;
case 300: $text = 'Multiple Choices'; break;
case 301: $text = 'Moved Permanently'; break;
case 302: $text = 'Moved Temporarily'; break;
case 303: $text = 'See Other'; break;
case 304: $text = 'Not Modified'; break;
case 305: $text = 'Use Proxy'; break;
case 400: $text = 'Bad Request'; break;
case 401: $text = 'Unauthorized'; break;
case 402: $text = 'Payment Required'; break;
case 403: $text = 'Forbidden'; break;
case 404: $text = 'Not Found'; break;
case 405: $text = 'Method Not Allowed'; break;
case 406: $text = 'Not Acceptable'; break;
case 407: $text = 'Proxy Authentication Required'; break;
case 408: $text = 'Request Time-out'; break;
case 409: $text = 'Conflict'; break;
case 410: $text = 'Gone'; break;
case 411: $text = 'Length Required'; break;
case 412: $text = 'Precondition Failed'; break;
case 413: $text = 'Request Entity Too Large'; break;
case 414: $text = 'Request-URI Too Large'; break;
case 415: $text = 'Unsupported Media Type'; break;
case 500: $text = 'Internal Server Error'; break;
case 501: $text = 'Not Implemented'; break;
case 502: $text = 'Bad Gateway'; break;
case 503: $text = 'Service Unavailable'; break;
case 504: $text = 'Gateway Time-out'; break;
case 505: $text = 'HTTP Version not supported'; break;
default:
trigger_error('Unknown http status code ' . $code, E_USER_ERROR); //
exit('Unknown http status code "' . htmlentities($code) . '"');
return $prev_code;
}
$protocol = (isset($_SERVER['SERVER_PROTOCOL']) ?
$_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0');
header($protocol . ' ' . $code . ' ' . $text);
$GLOBALS['http_response_code'] = $code;
// original function always returns the previous or current code
return $prev_code;
}
}
----
Server IP: 72.52.91.14
Probable Submitter: 85.250.103.140
----
Manual Page -- http://php.net/manual/en/function.http-response-code.php
Edit -- https://master.php.net/note/edit/116539
Del: integrated -- https://master.php.net/note/delete/116539/integrated
Del: useless -- https://master.php.net/note/delete/116539/useless
Del: bad code -- https://master.php.net/note/delete/116539/bad+code
Del: spam -- https://master.php.net/note/delete/116539/spam
Del: non-english -- https://master.php.net/note/delete/116539/non-english
Del: in docs -- https://master.php.net/note/delete/116539/in+docs
Del: other reasons-- https://master.php.net/note/delete/116539
Reject -- https://master.php.net/note/reject/116539
Search -- https://master.php.net/manage/user-notes.php