用最短的PHP代码返回HTTP响应码

Posted by 撒得一地 on 2015年12月12日 in PHP笔记

在PHP中,有标准、写入文档的方法来返回HTTP相应码。下面介绍的方法是文档中没有,但代码更简短的实现方法。

标准文档中代码

在PHP文档中,建议返回404 NOT FOUND的代码是:

header("HTTP/1.0 404 Not Found");

我打算写一个能返回HTTP响应码,而且适合框架且代码量尽量简短,所以,我并不想在代码中用数组来实现响应文本,因为这使代码太长了。

测试其它可能方法

我决定测试一系列可行的方法来看看是否可以使得代码变短,以下是我的测试效果:

header("HTTP/1.1 404");   //works

header("HTTP/1 404");     //works

header("HTTP/ 404");      //works

header("HTTP 404");       //doesn't work, returns 200 OK

header("HTTP/1.1",0,404); //doesn't work, returns 200 OK

header("HTTP/1",0,404);   //doesn't work, returns 200 OK

header("HTTP/",0,404);    //doesn't work, returns 200 OK

header("HTTP",0,404);     //works

header("",0,404);         //doesn't work, returns 200 OK

header("/",0,404);        //works

header("1",0,404);        //works

header(1,0,404);          //works

header(0,0,404);          //works

从上面的测试结果可以知道,最短的代码是:

header(0,0,404);

这个结果对我来说使我感到意外,因为文档说函数中为了使第三个参数生效,所以第一个参数不能为空。但是,通过empty()函数可以知道整型0属于为空的参数。

我在PHP 5.3.10中测试,当然,你可以在PHP 5.4.0或以上的版本使用 http_response_code() 函数,这是它并不够短。

我并没有测试所有可能的响应码,但在我测的从400-420和500-510这些状态码中都能很好的工作。

一个友好的警告

如一些其它人认为,使用一个未被官方批露的特性是非常危险的。因为他可能在未来就变得不可行,我不会再使用它,因为使用上面那种代码无法做到像下面这些比较友好的提醒:

header("HTTP/1.0 404 This is not the page you're looking for");

或者当你想进一步描述错误时,比如,访问者访问了/api/resource/1234,但找不到1234这个ID:

header("HTTP/1.0 404 Resource ID 1234 not found");

使用官方提供的代码,可以将404错误描述进一步具体化,对用户也会更加友好!

英文原文:http://www.codeproject.com/Tips/1062217/The-Shortest-PHP-Code-for-Returning-HTTP-Response

标签:

上一篇:

下一篇:

相关推荐

网站地图|XML地图

Copyright © 2015-2024 技术拉近你我! All rights reserved.
闽ICP备15015576号-1 版权所有©psz.