PHP的header可以输出http头部信息,前提是,在header之前不能输出任何内容,因为所有的内容都作为http的body输出给客户端了,一旦有body的内容,就不可能再添加任何head部分的信息。
header函数的一个常用的方式就是用来做转向,redirect。
比如,我需要转到某个地址,只要执行下述代码:
浏览器会收到一个302的http状态码,告诉他这个内容已经被转移了。
重要的是,php会在调用header函数后,继续执行后面的代码,你可以用我的代码亲自试验一下:
肯定会执行到fwrite函数的,打开header.txt文件,检查时间!
对此,解决的办法是,要在每一个header函数后面加上exit,保证当前页面停止执行,进而转向location指定的地址。
为了避免到处都是exit,可以写一个专门用作转向的函数,比如:
另,为了避免在header之前输出body的内容,许多php框架都采用了php页面尾部不写?>的方式,因为有些人总习惯在?>后面添加一个换行,这真的是个不好的习惯。
没看懂为什么有些php文件页尾不加?>,不是要和<?php对应的么?这样不是不对应了么?谢谢。