web-dev-qa-db-ja.com

PHPセッションがヘッダーの後に破棄/失われました

header()を使用して_/_にリダイレクトする前に、いくつかのセッション値を設定するスクリプトがあります。

これを実装した後でも、header()の後に_$_SESSION_変数が破棄/失われることに関する多くの投稿を読みました。

_// set session here

session_regenerate_id(true);
session_write_close();
header("Location: /");
_

session_start()は正しい場所に設定されていますが、私が見逃している可能性のあることを誰かが知っていますか?

Index.phpページに私はこれを持っています:

_session_start();
print_r($_SESSION);

// outputs nothing :'(
_

コードはかなり複雑なので、すべてを投稿するのではなく、スニペットだけを投稿します。

16
Ben Everard

この質問を閉じるために、サーバー構成に問題があると結論付けました。ホストがこの種のことでよく知られていることを考えると、当然のことです。

3
Ben Everard

ロケーションヘッダーを使用しているためにセッション関連の問題が発生したことは一度もありません-両方のページで session_start を呼び出していますか?


うーん...この回答は、上記のsession_startビットを追加する前に、はるかに理にかなっており、session_startを使用していると確信しているという事実に言及しました。 :-)

11
John Parker

ヘッダーはセッションを閉じる前に送信する必要があります

session_regenerate_id(true);

header("Location: /");
// the header must be sent before session close
session_write_close(); // here you could also use exit();
5
streetparade

ヘッダーリダイレクトの後、PHPスクリプトを終了する必要があります:

header("Location: /");
exit();
4
vivek goyal

出口を置くだけです。ヘッダーの後:Dこれで解決しました

4
junaid