302是臨時重定向的意思。表示被訪問頁面因為各種需要被臨時跳轉到其他頁面。
PHP裡的302重定向非常簡單,只要在返回的HTTP Response Header裡新增Location欄位,PHP將自動返回302狀態碼。
例如:
<?php
header("Location: URL地址");
?>
這段程式碼將自動重定向到URL地址
注意的是,跳轉不是在收到response header的時候馬上進行,也就是說頁面的剩餘內容會被下載來之後瀏覽器才會跳轉。新手常犯的一個錯誤是,在邏輯判斷時對符合條件的情況進行header跳轉之後,忘了在之後加上exit(),導致錯誤。例如,用user_login()判斷使用者是否進行了登入,如果未登入則跳轉到登入頁面。程式碼如下:
if(!user_login()){
header("Location:login.php");
}
//display contents for login users.
這裡,容易以為header之後這段程式碼就結束了,沒有在header之後使用exit()。後面的程式碼繼續被執行,導致未登入使用者看到了已登入使用者才能看到的內容。
302是臨時重定向的意思。表示被訪問頁面因為各種需要被臨時跳轉到其他頁面。
PHP裡的302重定向非常簡單,只要在返回的HTTP Response Header裡新增Location欄位,PHP將自動返回302狀態碼。
例如:
<?php
header("Location: URL地址");
?>
這段程式碼將自動重定向到URL地址
注意的是,跳轉不是在收到response header的時候馬上進行,也就是說頁面的剩餘內容會被下載來之後瀏覽器才會跳轉。新手常犯的一個錯誤是,在邏輯判斷時對符合條件的情況進行header跳轉之後,忘了在之後加上exit(),導致錯誤。例如,用user_login()判斷使用者是否進行了登入,如果未登入則跳轉到登入頁面。程式碼如下:
<?php
if(!user_login()){
header("Location:login.php");
}
//display contents for login users.
?>
這裡,容易以為header之後這段程式碼就結束了,沒有在header之後使用exit()。後面的程式碼繼續被執行,導致未登入使用者看到了已登入使用者才能看到的內容。