php检测http状态码,PHP: http_response_code - Manual

@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;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值