在PHP利用Header函數(shù)跳轉(zhuǎn)時需會碰到一些無法跳轉(zhuǎn)的問題,這里小編總結(jié)了常見的三種導致無法跳轉(zhuǎn)的例子與解決方法給各位,希望此例子對大家?guī)韼椭?
在通過php的header('Location:http://www.companysz.com')做跳轉(zhuǎn)時,有時會不成功,追其原因有以下幾種情況:
寫法錯誤:
•location和“:”號間不能有空格,否則會出錯.
•在用header()前不能有任何的輸出.
•header后的PHP代碼還會被執(zhí)行,所以在函數(shù)之前最好加上exit()來停止之后程序的執(zhí)行,另外還有一個問題,算是比較低級了.
編碼報錯,代碼如下:header("location:http://www.companysz.com/");
要求header前沒有任何輸出,否則會報錯,當我們以 ANSI 格式編碼時,多數(shù)默認情況,可以正常實現(xiàn)PHP跳轉(zhuǎn),代碼如下:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
有時我們需要在網(wǎng)頁中事先判斷跳轉(zhuǎn)條件,如果符合則正常顯示網(wǎng)頁,而網(wǎng)頁是以 UTF-8 格式編碼,此時使用header則會報錯,原因是 UTF-8 編碼在文本開始處偷偷地輸出了三個字符(BOM),默認對我們不可見,因此不滿足“header前沒有任何輸出”的條件,從而報錯.
解決方法是使用Notepad++等文本編輯器打開文件,轉(zhuǎn)為 UTF-8 無 BOM 編碼格式,保存退出即可.
PHP header 默認302臨時重定向,如需要使用301永久重定向,可使用以下代碼:
- <?php
- header("HTTP/1.1 301 Moved Permanently");
- header("Location: http://Vevb.com/");
- ?>
如果不關注HTTP狀態(tài),可以使用JavaScript實現(xiàn)跳轉(zhuǎn),代碼如下:
順序問題,代碼如下:
- <?php
- if(1){
- header("Location:http://www.baidu.com/");
- }
- header("Location:01.php");
- header("Location:03.php");
- header("Location:http://www.sina.com");
- echo "111";
- header("Location:http://www.g.cn");
- echo "222";
- header("Location:http://www.163.cn");
- echo "333";
- ?>
如上代碼為什么不跳轉(zhuǎn)到header("Location:http://www.baidu.com/");?
另外一個問題服務器讀PHP文件,是讀一點發(fā)送給客戶端一點,還是一次讀完后,才發(fā)送給客戶.Javascript是怎么個讀法?
php腳本是從上往下是順序讀的,在服務器端一次性讀完以后發(fā)給客戶端,這個文件,當讀到if時本應該發(fā)送header("Location:http://www.baidu.com/");但是下面還有header("Location:01.php");
header("Location:03.php");
header("Location:http://www.sina.com");就會繼續(xù)讀到最后一條而echo的優(yōu)先級低于低于header,當很多個header并列時就會把最后一條顯示,就像顯示數(shù)組一樣,$forum[],當你寫 echo $forum就只會把數(shù)組中的最后一條記錄顯示,javascript是客戶端腳本,當你的頁面下載后以后所有的javascript腳本文件就已經(jīng)在你的電腦里面了,只有對其操作時才會有響應.
新聞熱點
疑難解答