ホームページ  >  記事  >  バックエンド開発  >  phpでホームページに直接ジャンプできない問題の解決方法

phpでホームページに直接ジャンプできない問題の解決方法

PHPz
PHPzオリジナル
2023-04-12 14:44:31542ブラウズ

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。