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