1. 程式人生 > >php header(location)容易被忽略小問題——exit

php header(location)容易被忽略小問題——exit

在header跳轉後使用exit

PHP的header可以輸出http頭部資訊,前提是,在header之前不能輸出任何內容,因為所有的內容都作為http的body輸出給客戶端了,一旦有body的內容,就不可能再新增任何head部分的資訊。

header函式的一個常用的方式就是用來做轉向,redirect。

比如,我需要轉到某個地址,只要執行下述程式碼:

  1. header('Location: http://write.blog.csdn.net');  

瀏覽器會收到一個302的http狀態碼,告訴他這個內容已經被轉移了。

重要的是,php會在呼叫header函式後,繼續執行後面的程式碼,你可以用我的程式碼親自試驗一下:

  1. header('Location: http://www.nowamagic.net/');  
  2. $fp = fopen('header.txt''w+');  
  3. fwrite($fpdate('Y-m-d H:i:s'));  


肯定會執行到fwrite函式的,開啟header.txt檔案,檢查時間!

對此,解決的辦法是,要在每一個header函式後面加上exit,保證當前頁面停止執行,進而轉向location指定的地址。

為了避免到處都是exit,可以寫一個專門用作轉向的函式,比如:

  1. function Redirect($strUrl) {  
  2.     header('Location: '
     . $strUrl);  
  3.     exit;  
  4. }  


另,為了避免在header之前輸出body的內容,許多php框架都採用了php頁面尾部不寫?>的方式,因為有些人總習慣在?>後面新增一個換行,這真的是個不好的習慣。