実現したいこと
ページ移行後にSESSION情報を取得したい。
発生している問題・分からないこと
tokenを確認するのが目的です。
ページAで作成したtokenと
ページBに移行した時のtokenが
一致しているか確認したいです。
これらの処理は通常では正しく動作しました。
ですが、ページAでCtrl+F5で再読み込みした後
submitしページBに移行すると$_SESSION["token"]が取得できません。
$_POST["token"]は取得できます。
ページAでCtrl+F5した場合のみ発生するのですが
この原因を教えて頂けますと幸いです。
エラーメッセージ
error
1ページB 2Warning: Undefined array key "token" in ******* on line 4
該当のソースコード
PHP(ページA)
1<?php2 session_start();3 4 //tokenを生成する。5 $token = createToken();6 7 var_dump($token);8 var_dump($_SESSION["token"]);9?>10<form action="B.php" method="post">11 <input class="password" name="password" type="text" value="" required>12 <input class="btn" type="submit" value="ログイン">13 14 <input name="token" type="hidden" value="<?php echo h($token) ?>">15</form>
PHP(ページB)
1<?php2 session_start();3 4 var_dump($_POST["token"]);5 var_dump($_SESSION["token"]);6?>
PHP
1 function createToken() {2 $token = uniqid();3 $_SESSION["token"] = $token;4 5 return $token;6 }
試したこと・調べたこと
上記の詳細・結果
(1)セッションが生成されているか
PHP
1 var_dump($token);2 var_dump($_SESSION["token"]);
まずセッションがあるか確認するためにページAで確認しました。
その結果、同じ値が取得できているので、POST,SESSION共に保存できています。
その為、一時的にでも保存出来ていることを確認しました。
(2)F5なら問題ない
そもそも、F5で読み込むだけなら正しく取得できるので
保存もされ、ページBで取得できることも確認しました。
(3)$_POSTは取得できる。
PHP
1var_dump($_POST["token"]);
ページBに移行後、$_POST["token"]に関しては取得できました。
その為、SESSIONだけが取得できないと分かりました。
(4)QRコードでも
ページAのリンクをQRコードにして、スマホで読み込んだ後
再読み込みせずにsubmitした場合でも、同じく$SESSIONだけが取得できませんでした。
Ctrl+F5で以前のセッションが消えるとしても、ページAの最初でtokenを生成していて、var_dump()でもそれを確認しているので、その他なにが影響しているのかが分かりません…。
補足
特になし
0 コメント