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 :'(
_
コードはかなり複雑なので、すべてを投稿するのではなく、スニペットだけを投稿します。
この質問を閉じるために、サーバー構成に問題があると結論付けました。ホストがこの種のことでよく知られていることを考えると、当然のことです。
ロケーションヘッダーを使用しているためにセッション関連の問題が発生したことは一度もありません-両方のページで session_start を呼び出していますか?
うーん...この回答は、上記のsession_startビットを追加する前に、はるかに理にかなっており、session_startを使用していると確信しているという事実に言及しました。 :-)
ヘッダーはセッションを閉じる前に送信する必要があります
session_regenerate_id(true);
header("Location: /");
// the header must be sent before session close
session_write_close(); // here you could also use exit();
ヘッダーリダイレクトの後、PHPスクリプトを終了する必要があります:
header("Location: /");
exit();
出口を置くだけです。ヘッダーの後:Dこれで解決しました