使用PHP Header要注意的几个问题

 

在PHP中用header("location: http://www.miyifun.com");进行跳转要注意以下几点:

1、location和“:”号间不能有空格,否则会出错。

2、在用header前不能有任何的输出。

 

要求header前没有任何输出

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

    具体的语句有: ob_start(); ob_end_clean();ob_flush();[break]

3、header后的PHP代码还会被执行。要及时exit;

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

 

所以,标准的使用方法是:

ob_start();

........

if ( something ){

     ob_end_clean();

     header("Location: yourlocation");

     exit;

else{

     ..........

     ob_flush();  //可省略

}


smarteng 发布于 2010-08-03 18:03