Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

PHP为Location头办后事

  PHP输出Location头后到底发生了什么事呢?我们来做下测试吧。 header('Location:http://www.web-tinker.com/');
echo 'i am the data';

  这个是Chrome上截的的HTTP请求与响应,可见直接输出Location头的HTTP状态码是302。这没有什么可纠结的地方,但是接着往下看,在响应头中有一句Content-Length:13,也就是说这个HTTP通信的内容部分是13个字节。但是我们转到Response选项卡上却得不到结果

  难道是内容部分没传递吗!?如果这样认为就被他忽悠了,我们使用端口拦截工具抓取数据试试
  客户端确确实实有收到内容部分的13字节“i am the data”只是浏览器不解析而已。所以我们使用Location头输出了以后,如果特殊情况就应该终止程序,因为输出结果只会占用带宽而已。 header('Location:http://www.web-tinker.com/');
die;
  这样就是输出后终止PHP程序,可是实际运用可没那么简单,通常这些东西是在判断语句中使用的。比如这样 if($_SERVER['QUERY_STRING']=='x'){
  header('Location:http://www.web-tinker.com/');
  die;
};
  但是这样的写法显然不符合我个人的PHP风格,于是我会这样写 if($_SERVER['QUERY_STRING']=='x')
  header('Location:http://www.web-tinker.com/') or die;
  header是一个函数,它的返回值始终是false的,所以可以直接使用or来并列执行代码省去一对大括号。
网名:
54.146.176.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^