-1

以前にSOを検索しましたが、問題を解決できませんでした

ヘッダーにセッション パラメータが含まれています。そして、このヘッダーは私のすべてのページに含まれています。ランディングページ(ユーザーが登録またはログインする場所)を除いてうまく機能します:悪名高いCannot send session cookie - headers already sentエラーが発生します。

disable session_start();ヘッダー全体を削除せずにランディング ページのみで使用できる方法はありますか?

そうでない場合、他にどのようなオプションを検討する必要がありますか?

編集:

ヘッダー ファイルの先頭にあるセッション パラメータは次のとおりです。

session_start();
$lifetime=5000000;
session_set_cookie_params($lifetime);

このエラーは開発では表示されません。生産のみ。

4

2 に答える 2

1

session_start()ランディング ページでの使用に問題はありません。への呼び出しの前にブラウザに他に何も送信されないように、ヘッダー スクリプトがページの上部に含まれていることを確認する必要がありますsession_start()。なぜなら :

: Cookie ベースのセッションを使用するには、ブラウザーに何かを出力する前に session_start() を呼び出す必要があります。

上記のメモは以下からコピーされています: http://php.net/manual/en/function.session-start.php

これを行うことができるかもしれません: ヘッダーが既に送信されているかどうかを確認します。ヘッダーが既に送信されている場合は、呼び出しを避けてくださいsession_start()

このページはその方向に役立つかもしれません: How to check if Headers already sent in PHP

問題の理由を見つけて修正する必要がありますが、当面は次の行に沿ったコードが役立つはずです。

if( ! headers_sent() )
{
    session_start();
    $lifetime=5000000;
    session_set_cookie_params($lifetime);
}
于 2013-09-27T00:01:13.570 に答える