header("Location:")应该注意的几个问题

2013-10-15 浏览:1487
header(
评论:(0)复制地址

header("Location:")作为php的转向语句。其实在使用中,他有几点需要注意的地方。

1、要求header前没有任何输出

    但是很多时候在header前我们已经输出了好多东西了,但是此时如果再次header的话,显然是出错的,在这里我们启用了一个ob的概念,这个东东的意思是在服务器端先存储有关输出,等待适当的时机再输出,而不是像现在这样运行一句,输出一句,发现header语句就只能报错了。

    具体的语句有: ob_start(); ob_end_clean();ob_flush();.........

 

2、在header("Location:")后要及时exit

    否则他是会继续执行的,虽然在浏览器端你看不到相应的数据出现,但是如果你进行抓包分析的话,你就会看到下面的语句也是在执行的。而且被输送到了浏览器客户端,只不过是没有被浏览器执行为html而已(浏览器执行了header进行了转向操作)。

 

所以,标准的使用方法是

ob_start();

........

if ( something ){

     ob_end_clean();

     header("Location: yourlocation");

     exit;

else{

     ..........

     ob_flush();  //可省略

}

评论:(0)复制地址
发布:苗景云 | 分类:IT技术&设计 | Tags:PHP

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。