-1

重複の可能性:
PHP によって既に送信されたヘッダー

Web サイトの SESSION 保護領域内で DOMPDF (HTML を PDF に変換するスクリプト) にアクセスしようとしています。

SESSION にはユーザー情報が含まれており、ボタンをクリックするとページが更新され、そのページが pdf としてダウンロードされます。これは、ラップトップの開発サーバーで正常に機能します。しかし、オンラインでは、ヘッダーは既に送信されていると表示されます。

以下のヘッダーを印刷し、SESSIONまでさかのぼりました。SESSION ヘッダーを初期化するとすぐに送信されますか?

array(3) { 
  [0]=> string(38) "Expires: Thu, 19 Nov 1981 08:52:00 GMT"
  [1]=> string(77) "Cache-Control: no-store, no-cache, must-revalidate,post-check=0, pre-check=0" 
  [2]=> string(16) "Pragma: no-cache"
}
4

4 に答える 4

1

ユーザーに何かを送信する前に、セッションを開始する必要があります。出力バッファ (ob_*関数、thisおよびthisなど) を使用して、スクリプトが送信すべきではないときに何かを送信するのを防ぐことができます。

于 2012-07-25T15:50:31.197 に答える
0

セッションを開始してもヘッダーは送信されませんが、ヘッダーと共に送信する必要がある Cookie を設定しようとします。おそらく、ブラウザに何かを出力した後に session_start() を呼び出しているでしょう。

于 2012-07-25T15:50:49.667 に答える
0

答えは、 session_start() の PHP ドキュメントにあるかもしれません:

次のようなエラーが表示される場合:

エラー警告: session_start() [function.session-start]: "セッション Cookie を送信できません - ヘッダーは既に送信されています (出力開始時刻..."

...また...

「警告: session_start(); [function.session-start]: セッション キャッシュ リミッターを送信できません - ヘッダーは既に送信されています」.

... session_start(); であることを確認してください。DOCTYPE宣言の前であっても、文字通りスクリプトの一番上にあります。

...

于 2012-07-25T15:52:17.997 に答える
0

これには多くの原因が考えられますが、最も可能性が高いのは、ヘッダーが送信される前に、知らないうちに空白が画面に出力されていることです。

スクリプトの末尾から不要な close-php タグ (?>) を削除します。これは役に立ちます (ベストプラクティスです)。

于 2012-07-25T15:49:28.807 に答える