PHP Header函數跳轉時需要注意的一些問題

來源:互聯網
上載者:User

在通過php的header('Location:http://www.111cn.net')做跳轉時.有時會不成功.追其原因有以下幾種情況:

寫法錯誤

•location和“:”號間不能有空格,否則會出錯。

•在用header()前不能有任何的輸出。

•header後的PHP代碼還會被執行,所以在函數之前最好加上exit()來停止之後程式的執行

另外還有一個問題,算是比較低級了


編碼報錯

 代碼如下 複製代碼

<?php
 header("location:http://www.111cn.net/");
?>

要求header前沒有任何輸出,否則會報錯。

當我們以 ANSI 格式編碼時(多數預設情況),可以正常實現PHP跳轉。

 代碼如下 複製代碼
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

有時我們需要在網頁中事先判斷跳轉條件,如果符合則正常顯示網頁,而網頁是以 UTF-8 格式編碼,此時使用header則會報錯。
原因是 UTF-8 編碼在文本開始處偷偷地輸出了三個字元(BOM),預設對我們不可見。因此不滿足“header前沒有任何輸出”的條件,從而報錯。

 
解決方案是使用Notepad++等文字編輯器開啟檔案,轉為 UTF-8 無 BOM 編碼格式,儲存退出即可。

PHP header 預設302臨時重新導向,如需要使用301永久重新導向,可使用以下代碼。

 代碼如下 複製代碼
<?php
 header("HTTP/1.1 301 Moved Permanently");
 header("Location: http://feitsui.net/");
?>

如果不關注HTTP狀態,可以使用JavaScript實現跳轉。

 代碼如下 複製代碼

<script type="text/javascript">
 window.location.href="http://www.111cn.net/";
</script>

三,順序問題

 代碼如下 複製代碼

<?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";
?>

如上代碼為什麼不跳轉到header("Location:http://www.baidu.com/");?

另外一個問題伺服器讀PHP檔案,是讀一點發送給用戶端一點,還是一次讀完後,才發送給客戶.Javascript是怎麼個讀法?

 php指令碼是從上往下是順序讀的,在伺服器端一次性讀完以後發給用戶端,這個檔案,當讀到if時本應該發送header("Location:http://www.baidu.com/");但是下面還有header("Location:01.php");
header("Location:03.php");
header("Location:http://www.sina.com");就會繼續讀到最後一條而echo的優先順序低於低於header,當很多個header並列時就會把最後一條顯示,就像顯示數組一樣,$forum[],當你寫 echo $forum就只會把數組中的最後一條記錄顯示。javascript是用戶端指令碼,當你的頁面下載後以後所有的javascript指令檔就已經在你的電腦裡面了,只有對其操作時才會有響應。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.