PHP Header用于頁面跳轉時的幾個注意事項

前言

本文介紹的是在PHP中用header("location:test.php")進行跳轉要注意以下幾點,有助于解決一些新手經常遇到的問題

一、location和":"號間不能有空格,否則會出錯。

二、在用header前不能有任何的輸出。

三、header后的PHP代碼還會被執行。

下面是和asp中重定向response.redirect的比較:

例1:


    response.redirect "../test.asp"
    header("location:../test.php");

兩者區別:

asp的redirect函數可以在向客戶發送頭文件后起作用.


    <html><head></head><body>
    <%response.redirect "../test.asp"%>
    </body></html>

查是php中下例代碼會報錯:


    <html><head></head><body>
    <?
    header("location:../test.php");
    ?>
    </body></html>

只能這樣:


    <?
    header("location:../test.php");
    ?>
    <html><head></head><body>...</body></html>

即header函數之前不能向客戶發送任何數據.

例2:

asp中


    <html><head></head><body>
    <%
    response.redirect "../a.asp"
    response.redirect "../b.asp"
    %>
    </body></html>

結果是重定向a.asp文件.

php呢?


    <?
    header("location:../a.php");
    header("location:../b.php");
    ?>
    <html><head></head><body></body></html>

我們發現它重定向b.php.

原來在asp中執行redirect后不會再執行后面的代碼.

而php在執行header后,繼續執行下面的代碼.

在這方面上php中的header重定向不如asp中的重定向.有時我們要重定向后,不能執行后面的代碼:

一般地我們用


    if(...)
    header("...");
    else
    {
    ...
    }

但是我們可以簡單的用下面的方法:


    if(...)
    { header("...");exit();}

還要注意的是,如果是用Unicode(UTF-8)編碼時也會出現問題,需要調整緩存設置.


    <[email=%@]%@LANGUAGE="VBSCRIPT[/email]" CODEPAGE="936"%>
    <%if Request.ServerVariables("SERVER_NAME")="s.jb51.net" then
    response.redirect "news/index.htm"
    else%>
    <%end if%>
    <script>
    var url = location.href;
    if(url.indexOf('http://www.devdao.com/')!=-1)location.href='/index/index.htm';
    if(url.indexOf('http://www.knowsky.com/')!=-1)location.href='/index1/index.htm';
    if(url.indexOf('http://www.google.com/')!=-1)location.href='/cn/index.asp';
    if(url.indexOf('http://www.baidu.com/')!=-1)location.href='/cn/index.asp';
    </script>

總結

以上就是這篇文章的全部內容了,希望能對大家的學習或者工作帶來一定的幫助,如果有疑問大家可以留言交流。


所屬標簽

無標簽

25选5玩法中奖