ホームページ  >  記事  >  バックエンド開発  >  PHP セッション Cookie エラーを完全に排除する_PHP チュートリアル

PHP セッション Cookie エラーを完全に排除する_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:45:061063ブラウズ

PHP コードを書いたことがある限り、ほとんどの場合、この不可解な警告に遭遇したことがあると思います。今日はそれを解決します。......
見てください。PHP マニュアルを参照してください。そして答えは次のとおりです:
メッセージ「警告: セッション Cookie を送信できません - ヘッダーはすでに送信されました...」または「ヘッダー情報を追加できません - ヘッダーはすでに送信されました...」。
関数 header()、setcookie()、およびセッション関数は、出力ストリームにヘッダー情報を追加する必要があります。ただし、ヘッダー情報は、他の出力コンテンツの前にのみ送信できます。これらの関数を使用する前に出力 (HTML など) を行うことはできません。 headers_sent() 関数は、スクリプトがヘッダーを送信したかどうかをチェックします。 「出力制御関数」を参照してください。
意味:上記の機能を使用する前に、テキスト、空白行、復帰、ス​​ペースなどを入れないでください。しかし。 。 。問題は、この答えが満足のいくものではないということです。プログラムは他の PHP 環境でも正常に動作することが多いためです。
まず: このエラーはどのようにして発生するのでしょうか? PHP が HTTP ヘッダー出力と本文出力をどのように処理するかを見てみましょう。
PHP スクリプトの実行が開始されると、ヘッダー情報と本文情報を同時に送信できます。ヘッダー情報 (header() または SetCookie() 関数から) はすぐには送信されず、リストに保存されます。 これにより、デフォルトのヘッダー (Content-Type ヘッダーなど) を含むヘッダー情報を変更できます。ただし、スクリプトがヘッダー以外の出力を送信すると (たとえば、HTML または print() 呼び出しを使用して)、PHP は最初にすべてのヘッダーを送信してから、HTTP ヘッダーを終了する必要があります。その後、メイン データの送信を続けます。この時点から、ヘッダー情報を追加または変更する試みは許可されず、上記のエラー メッセージのいずれかが送信されます。
わかりました! それでは解決しましょう:
愚かな方法: エラー警告を表示しないでください!
耳を塞いでベルを盗む具体的な方法には触れません ^_^#
解決策: 1) 以下に適しています。 PHPを編集する権限のある方。 INIの人
phpを開きます。 ini ファイル (あなたの php については私よりもよく知っているはずです。ini はどこにありますか) で、
output_buffering = を見つけて、それを on または任意の数値に変更します。 IIS6 の場合は、ON に変更してください。そうしないと、PHP の効率が非常に遅くなります。
2) バーチャルホストを使用する場合、PHPの編集はできません。 INI、どうすればいいでしょうか?
簡単です:
スペースのルートディレクトリに作成します。 htaccess ファイルの内容は次のとおりです:
AllowOverride All
PHP_FLAG Output_buffering On
残念な状況ですが、まだすべての Web ページが表示されません
その後、スペースプロバイダーに電話して、Apache をインストールするように依頼できますか? 。 htaccessのAllowOverrideをonにする
3)PHPファイル内で解決する
ob_start()
出力バッファリング機構を有効にする。出力バッファリングは複数のレベルをサポートします。たとえば、ob_start() 関数は複数回呼び出すことができます。
ob_end_flush()
出力バッファ(出力バッファ)を送信し、出力バッファリング機構を無効にします。
ob_end_clean()
出力バッファをクリアしますが送信はせず、出力バッファリングを無効にします。
ob_get_contents()
現在の出力バッファを文字列に返します。スクリプトによって出力された出力を処理できます。
原則:
output_buffering が有効な場合、スクリプトが出力を送信するときに PHP は HTTP ヘッダーを送信しません。代わりに、この出力を動的に増加するキャッシュにパイプ処理します (集中出力メカニズムを持つ PHP 4.0 でのみ使用可能)。ヘッダーは実際には送信されないため、ヘッダーを変更/追加したり、Cookie を設定したりすることができます。すべてのスクリプトが終了すると、PHP は自動的に HTTP ヘッダーをブラウザーに送信し、出力バッファーの内容を送信します。

http://www.bkjia.com/PHPjc/320405.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/320405.html技術記事 PHP コードを書いたことがある限り、ほとんどの場合、この不可解な警告に遭遇したことがあると思います...今日はそれを解決します.... PHP マニュアルを読んで、その答えを見つけてください。メッセージ「...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。