PHP ページ移行後にSESSIONが取得できない問題について

実現したいこと

ページ移行後に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 コメント