php header()関数の無効なジャンプの解決策

WBOY
リリース: 2016-06-20 13:03:00
オリジナル
1813 人が閲覧しました

エンコーディングを変換する際、先頭でUTF-8エンコーディングを宣言する必要があるページがありますが、プログラム内のヘッダーと競合します。グーグルで検索したところ、いくつかの解決策が見つかり、それを翻訳して整理しました。

次のメッセージが表示された場合: 「警告: ヘッダー情報を変更できません - ヘッダーはすでに .... によって送信されています。」

PHP プログラムの実行時に次の警告が表示された場合: 「警告: ヘッダー情報を変更できません - ヘッダーは既に .... によって送信されました。」

次のユーザー投稿に基づくいくつかのメモ:

解決策はいくつかあります:

1. 空白行:

、特に include ファイルや require ファイルの後に空白行がないことを確認してください。多くの問題は、これらの空白行によって引き起こされます。

2. exit ステートメントを使用します (解決するには exit を使用します):

ヘッダー ステートメントの後に exit を使用すると、一部の人々に役立つようです

ヘッダーの後に exit() を追加します;

header ("Location: xxx");

exit();
ログイン後にコピー
3. PHP にはこの迷惑な問題があり、特定のページにリダイレクトする前に HTML が PHP コードまたはヘッダー変更の前にあると、「警告: ヘッダー情報は変更できません - ヘッダーはすでに ... によって送信されています。」というメッセージが表示されます。ブラウザに出力するときは常にヘッダーが設定され、変更できません。そのため、問題を回避するには次の 2 つの方法があります。

3a. Javascript を使用します (解決するには Javascript を使用します):

<? echo "<scrīpt> self.location( file.php );</scrīpt>"; ?>
ログイン後にコピー
これはスクリプトであるため、Javascript が実行されるまでヘッダーは変更されません。

Javascript を使用してヘッダーを置き換えることができます。また、この方法を使用するには、ブラウザが Javascript をサポートしている必要があることにも注意してください。

3b. 出力バッファリングを使用する (出力バッファリングを使用して解決します):---私はこの方法で解決しました。それができることが証明されました!

<?php ob_start(); ?>

... HTML codes ...

<?php

... PHP codes ...

header ("Location: ....");

ob_end_flush();

?>
ログイン後にコピー
上記のコードと同様に、このメソッドはページ生成時にページをキャッシュし、ヘッダーが出力された後にヘッダーを出力できるようにします。このサイトのウィッシュボードでは、この方法を使用してヘッダーの問題を解決しています。

4.php.iniでoutput_buffering = Onを設定します(php.iniでoutput_bufferingをオンにします)

set Output_buffering = On は、すべてのファイルの出力バッファリングを有効にします。ただし、このメソッドのパフォーマンスは、使用している Web サーバーと使用しているスクリプトの種類によって異なります。 🎜>

この方法は理論的には 3b 方法と同じです。ただし、この方法ではすべての PHP プログラムの出力キャッシュがオンになるため、サーバーのパフォーマンスやコードの複雑さによっては、PHP の実行効率に影響を与える可能性があります。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!