PHP はプログラミング言語として、決して完璧ではありません。強力ではありますが、それでも時々トラブルに遭遇することがあります。その 1 つは、PHP がホームページに直接ジャンプできないことです。
PHP を使用して Web サイトを開発する場合、通常はホームページ (index.php) が存在します。 Webサイトにアクセスする場合、通常、ユーザーはURLを入力してホームページにアクセスします。たとえば、foo.com にアクセスすると、通常は foo.com/index.php にジャンプします。
しかし、最初にindex.phpにジャンプしてからホームページにジャンプするのではなく、ホームページに直接ジャンプする必要がある場合があります。この時点では、PHP コードを使用してこの関数を実装しようとします。例:
header('Location: http://foo.com');
ただし、このコードを実行すると、ページがホームページにジャンプできないことがわかります。どうしてこれなの?
理由は、header() 関数を使用してジャンプする場合、header() 関数の前に何も出力してはいけないからです。そうしないと、header() 関数がエラーを報告し、ページのジャンプに失敗します。
たとえば、次のコードは header() 関数が正しく動作しなくなる原因となります:
echo 'Hello, World!'; header('Location: http://foo.com');
header() 関数を呼び出す前に「Hello, World!」が出力されているため、 header() 関数が正しく動作していません。
それでは、この問題をどうやって解決すればいいのでしょうか?
まず、header() 関数を呼び出す前に、何も出力されていないことを確認する必要があります。これは、HTML の前に PHP コードを配置するか、OB 関数を使用して出力をキャッシュすることで実現できます。たとえば、次のコードは正常に動作します:
ob_start(); echo 'Hello, World!'; ob_end_clean(); header('Location: http://foo.com');
次に、ユーザーをホームページにリダイレクトするジャンプ コードをindex.phpに追加できます。例:
if ($_SERVER['SCRIPT_FILENAME'] === __FILE__) { header('Location: http://foo.com'); exit; }
このコードは、現在のファイルが直接アクセスされているかどうかを判断し、ユーザーをホームページにリダイレクトします。 exit ステートメントを追加する必要があることに注意してください。追加しないと、後続のコードが引き続き実行されます。
つまり、PHP はホームページに直接ジャンプすることはできませんが、いくつかのテクニックを使用することでこの機能を実現できます。エラーを回避するには、header() 関数の前に何も出力しないようにすることが重要です。
以上がphpでホームページに直接ジャンプできない問題の解決方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。