利用PHP的header()函數,可以實現頁面跳轉,如
1 |
header("Location: ". $url); |
但它有個缺點,一旦HTTP前序塊已經發送,就不能使用 header() 函數,來發送其它的標題。
這個時候只能利用前端HTML或JS技術來實現頁面跳轉了!
怎樣知道HTTP前序塊已經發送了呢?
PHP的 headers_sent() 函數,可以幫忙。
PHP headers_sent() 函數
headers_sent() 函數檢查 HTTP 標題是否已被發送以及在哪裡被發送。
如果前序已發送,則返回 true,否則返回 false。
文法
headers_sent(file,line)
| 參數 |
描述 |
| file,line |
可選。 如果設定 file 和 line 參數,headers_sent() 會把輸出開始的 PHP 源檔案名稱和行號存入 file 和 line 變數中。 |
提示和注釋
注釋:一旦前序塊已經發送,就不能使用 header() 函數 來發送其它的標題。使用此函數至少可以避免與 HTTP 標題有關的錯誤資訊。
注釋:可選的 file 和 line 參數是 PHP 4.3 中新加的。
例子1
4 |
header("Location: http://www.w3school.com.cn/"); |
例子2
使用可選的 file 和 line 參數:
02 |
// 傳遞 $file 和 $line,供日後使用 |
04 |
if(!headers_sent($file,$line)) { |
05 |
header("Location: http://www.w3school.com.cn/"); |
07 |
// Trigger an error here |
09 |
echo"Headers sent in $file on line $line"; |
根據上面的知識點,我們可以整理出自己的PHP跳轉函數:
03 |
* @param string $url 跳轉地址 |
04 |
* @param int $time 跳轉延時(單位:秒) |
05 |
* @param string $msg 提示 |
07 |
functionredirect($url,$time= 0, $msg= '') { |
08 |
$url= str_replace(array("\n","\r"), '',$url); // 多行URL地址支援 |
10 |
$msg= "系統將在 {$time}秒 之後自動跳轉到 {$url} !"; |
20 |
header("Location: ". $url); |
22 |
header("Content-type: text/html; charset=utf-8"); |
23 |
header("refresh:{$time};url={$url}"); |
以上就介紹了php重新導向網頁,包括了方面的內容,希望對PHP教程有興趣的朋友有所協助。