ページにジャンプするときは、通常
を使用します。 header("location:test.php") を使用して PHP でジャンプする場合は、次の点に注意してください。これは、Web サイトで発生する一般的な問題の解決に役立ちます。初心者向けの質問
1. location と ":" の間にスペースを入れることはできません。スペースを入れないとエラーが発生します。
2. ヘッダーを使用する前に出力を行うことはできません。
3. ヘッダー以降の PHP コードも実行されます。
以下は、ASP の response.redirect との比較です:
例 1:
response.redirect "../test.asp"
header("location:../test.php");
2 つの違い:
asp のリダイレクト関数は、ヘッダー ファイルをクライアントに送信した後に機能します。
たとえば、
<ol class="dp-xml"> <li class="alt"><span><span class="tag">< </span><span class="tag-name">html</span><span class="tag">></span><span class="tag">< </span><span class="tag-name">head</span><span class="tag">></span><span class="tag">< /</span><span class="tag-name">head</span><span class="tag">></span><span class="tag">< </span><span class="tag-name">body</span><span class="tag">></span><span> </span></span></li> <li> <span class="tag">< </span><span>%response.redirect "../test.asp"%</span><span class="tag">></span><span> </span> </li> <li class="alt"> <span class="tag">< /</span><span class="tag-name">body</span><span class="tag">></span><span class="tag">< /</span><span class="tag-name">html</span><span class="tag">></span><span> </span> </li> </ol>
PHP の次のサンプル コードはエラーを報告します:
<ol class="dp-xml"> <li class="alt"><span><span class="tag"><</span><span> </span><span class="tag-name">html</span><span class="tag">></span><span class="tag"><</span><span> </span><span class="tag-name">head</span><span class="tag">></span><span class="tag"><</span><span> /head</span><span class="tag">></span><span class="tag"><</span><span> </span><span class="tag-name">body</span><span class="tag">></span><span> </span></span></li> <li> <span class="tag"><?</span><span> </span></li><li class="alt"><span class="tag-name">header</span><span>("location:../test.php"); </span></li><li><span class="tag">?></span><span> </span> </li> <li class="alt"> <span class="tag"><</span><span> /body</span><span class="tag">></span><span class="tag"><</span><span> /html</span><span class="tag">></span><span> </span> </li> <li><span>只能这样: </span></li> <li class="alt"> <span class="tag"><</span><span> ? </span></li><li><span>header("location:../test.php"); </span></li><li class="alt"><span class="tag">?></span><span> </span> </li> <li> <span class="tag"><</span><span> </span><span class="tag-name">html</span><span class="tag">></span><span class="tag"><</span><span> </span><span class="tag-name">head</span><span class="tag">></span><span class="tag"><</span><span> /head</span><span class="tag">></span><span class="tag"><</span><span> </span><span class="tag-name">body</span><span class="tag">></span><span>...</span><span class="tag"><</span><span> /body</span><span class="tag">></span><span class="tag"><</span><span> /html</span><span class="tag">></span><span> </span> </li> </ol>
つまり、PHP はデータを送信できません。
例 2:
asp
<ol class="dp-xml"> <li class="alt"><span><span class="tag"><</span><span> </span><span class="tag-name">html</span><span class="tag">></span><span class="tag"><</span><span> </span><span class="tag-name">head</span><span class="tag">></span><span class="tag"><</span><span> /head</span><span class="tag">></span><span class="tag"><</span><span> </span><span class="tag-name">body</span><span class="tag">></span><span> </span></span></li> <li> <span class="tag"><</span><span>% </span></li><li class="alt"><span>response.redirect "../a.asp" </span></li><li><span>response.redirect "../b.asp" </span></li><li class="alt"><span>%</span><span class="tag">></span><span> </span> </li> <li> <span class="tag"><</span><span> /body</span><span class="tag">></span><span class="tag"><</span><span> /html</span><span class="tag">></span><span> </span> </li> <li class="alt"><span>结果是重定向a.asp文件. </span></li> <li><span>php呢? </span></li> <li class="alt"> <span class="tag"><</span><span> ? </span></li><li><span>header("location:../a.php"); </span></li><li class="alt"><span>header("location:../b.php"); </span></li><li><span class="tag">?></span><span> </span> </li> <li class="alt"> <span class="tag"><</span><span> </span><span class="tag-name">html</span><span class="tag">></span><span class="tag"><</span><span> </span><span class="tag-name">head</span><span class="tag">></span><span class="tag"><</span><span> /head</span><span class="tag">></span><span class="tag"><</span><span> </span><span class="tag-name">body</span><span class="tag">></span><span class="tag"><</span><span> /body</span><span class="tag">></span><span class="tag"><</span><span> /html</span><span class="tag">></span><span> </span> </li> </ol>
では、b.php をリダイレクトすることがわかりました。
asp でリダイレクトを実行した後、次のコードは実行されないことがわかりました。 header では、php は次のコードを実行し続けます
この点で、php でのヘッダーのリダイレクトは、リダイレクトしたい場合に、次のコードを実行できないことがあります。
通常、私たちは
<ol class="dp-xml"> <li class="alt"><span><span>if(...) </span></span></li> <li><span>header("..."); </span></li> <li class="alt"><span>else </span></li> <li><span>{ </span></li> <li class="alt"><span>... </span></li> <li><span>} </span></li> </ol>
<ol class="dp-xml"> <li class="alt"><span><span>if(...) </span></span></li> <li><span>{ header("...");exit();} </span></li> </ol>
<ol class="dp-xml"> <li class="alt"><span><span class="tag"><</span><span> [</span><span class="attribute">email</span><span>=%@]%@</span><span class="attribute">LANGUAGE</span><span>=</span><span class="attribute-value">"VBSCRIPT[/email]"</span><span> </span><span class="attribute">CODEPAGE</span><span>=</span><span class="attribute-value">"936"</span><span>%</span><span class="tag">></span><span> </span></span></li> <li> <span class="tag"><</span><span> %if Request.ServerVariables("SERVER_NAME")="s.jb51.net" then </span></li><li class="alt"><span>response.redirect "news/index.htm" </span></li><li><span>else%</span><span class="tag">></span><span> </span> </li> <li class="alt"> <span class="tag"><</span><span> %end if%</span><span class="tag">></span><span> </span> </li> <li> <span class="tag"><</span><span> </span><span class="tag-name">script</span><span class="tag">></span><span> </span> </li> <li class="alt"> <span>var </span><span class="attribute">url</span><span> = </span><span class="attribute-value">location</span><span>.href; </span> </li> <li> <span>if(url.indexOf('http://www.jb51.net/')!=-1)</span><span class="attribute">location.href</span><span>=</span><span class="attribute-value">'/index/index.htm'</span><span>; </span> </li> <li class="alt"> <span>if(url.indexOf('http://www.kanshule.com/')!=-1)</span><span class="attribute">location.href</span><span>=</span><span class="attribute-value">'/index1/index.htm'</span><span>; </span> </li> <li> <span>if(url.indexOf('http://www.shouji17.com/')!=-1)</span><span class="attribute">location.href</span><span>=</span><span class="attribute-value">'/cn/index.asp'</span><span>; </span> </li> <li class="alt"> <span>if(url.indexOf('http://www.baidu.com/')!=-1)</span><span class="attribute">location.href</span><span>=</span><span class="attribute-value">'/cn/index.asp'</span><span>; </span> </li> <li> <span class="tag"><</span><span> /script</span><span class="tag">></span><span> </span> </li> </ol>