ページジャンプに PHP ヘッダーを使用するときに注意すべきいくつかの問題のまとめ
著者:Eve Cole
更新時間:2009-06-05 16:25:10
header("location:test.php") を使用して PHP にジャンプする場合は、次の点に注意する必要があります。これは、初心者がよく遭遇するいくつかの問題を解決するのに役立ちます。
1. location と「:」の間にスペースを入れることはできません。スペースを入れないとエラーが発生します。
2. ヘッダーを使用する前に出力を行うことはできません。
3. ヘッダー以降の PHP コードも実行されます。
以下は、ASP のリダイレクト response.redirect との比較です。
例 1:
応答.リダイレクト "../test.asp"
header("場所:../test.php");
2 つの違い:
ASP のリダイレクト機能は、ヘッダー ファイルをクライアントに送信した後に機能します。
のように
<html><頭></頭><本文>
<%response.redirect "../test.asp"%>
</body></html>
PHP の次のコードがエラーを報告するかどうかを確認します。
<html><頭></頭><本文>
<?
header("場所:../test.php");
?>
</body></html>
これが唯一の方法です:
<?
header("場所:../test.php");
?>
<html><head></head><body>...</body></html>
つまり、ヘッダー関数は以前はクライアントにデータを送信できませんでした。
例 2:
ASPで
<html><頭></頭><本文>
<%
応答.リダイレクト "../a.asp"
応答.リダイレクト「../b.asp」
%>
</body></html>
その結果、a.asp ファイルがリダイレクトされます。
phpはどうでしょうか?
<?
header("場所:../a.php");
header("場所:../b.php");
?>
<html><頭></頭><本文></本文></html>
b.php をリダイレクトしていることがわかりました。
asp でリダイレクトを実行すると、後続のコードが実行されないことがわかります。
php はヘッダーを実行した後、次のコードの実行を続けます。
この点で、php でのヘッダーのリダイレクトは、asp でのリダイレクトほど優れていません。リダイレクト後に次のコードを実行できない場合があります。
一般的に私たちが使用するのは、
もし(...)
ヘッダ("...");
それ以外
{
...
}
ただし、次の方法を使用することもできます。
もし(...)
{ ヘッダー("...");終了();}
また、エンコードに Unicode (UTF-8) を使用すると問題が発生する可能性があるため、キャッシュ設定を調整する必要があることにも注意してください。
<[email=%@]%@LANGUAGE="VBSCRIPT[/email]" CODEPAGE="936"%>
<%if Request.ServerVariables("SERVER_NAME")="s.jb51.net" then
応答.リダイレクト "news/index.htm"
それ以外の場合は%>
<%end if%>
<スクリプト>
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>