質問: お世話になります。 ### 前提・実現したいこと $_SESSION情報の維持 プログラム全体の目的は、ユーザーが既に登録したメールアドレスを変更するとき、 新しいメールアドレスに、ランダムな文字列を送り、これをフォームに入力させて 新しいメールアドレスが、確かに本人の物であると確認する、というものです。 ### 発生している問題・エラーメッセージ ログイン直後、1ページ目にログインした旨を示す文字列を $_SESSION['login']に格納しました。このページからの 遷移ではこの文字列が$_SESSION['login']に残っていますが、 その次の遷移後に$_SESSIONが空になっています。 ### 該当のソースコード 1ページ目 ``` 変更後のメールアドレス: ``` 2ページ目 ``` キーを入力 ``` 3ページ目 ``` session_start(); session_regenerate_id(true); var_dump($_SESSION);//ここで消えたことが確認された ``` どうすれば、セッション情報が安全に継続されますか。
回答: 2ページ目には、`sesstion_name()`があるみたいなので、そこが問題かと思います。 `session_name()`は`session_start()`よりも前にあるべきです。 PHPマニュアル抜粋 > > リクエストが開始された際にセッション名はリセットされ、 session.name に保存されたデフォルト値に戻ります。 よって、各リクエスト毎に(そして session_start() または session_register() をコールする前に) session_name() をコールする必要があります。 > > > --追記-- そして、独自のセッション名を使うには、毎ページ同じ値で`session_name('hogehoge')`が必要です。