セッションの値の一部が消えてしまいます。
現在、PHP5.6・Laravel4.2の環境で注文サイトを作成しているのですが、
セッションに保存してあるフラグを参照し、入力欄を自動で埋める処理のところで、
事前に登録してあるはずのセッションの値が消えているせいで、
正しく動作しない現象が発生しています。
下記にセッション登録処理部分のソースコードを載せていますが、
何か足りない処理があるのでしょうか。
是非ご教示ください。
この現象は、PCやAndroidでは発生せず、iPhoneのsafariのみで確認できています。
現象の詳細
画面Aを表示する際にセッションに
[ 'a' => 'A', 'b' => '', 'c' => '']
のようにセットする。
aタグで画面Bへ移動。
画面Bを表示する際に、
[ 'a' => 'A', 'b' => 'B', 'c' => 'C']
とセットする。
aタグで画面Cへ移動。
画面Cを表示する際にvar_dumpにてセッションの中身を出力すると
[ 'a' => 'A', 'b' => '', 'c' => '']
の状態で出力されます。
該当のソースコード
セッションへの登録処理
public static function regItemDetail( $key, $val ) { //セッション取得 $itemDetail = self::getItemDetail(); //セッションデータに登録 $itemDetail[$key] = $val; //セッション登録 SessionHelper::setItemDetail($itemDetail); } public static function getItemDetail() { if (!Session::has('itemdetail')) { return self::crtItemDetail(); } return Session::get('itemdetail'); } public static function setItemDetail( $itemDetail ) { Session::put('itemdetail', $itemDetail); }
### 2020/04/07 追記
アドバイスありがとうございます。
無知ですみませんが「HTTPレスポンスヘッダのキャッシュの管理」というのが、
いまいちよくわかっておりません。
PCからChromeを使用してレスポンスヘッダは見れるのですが、
「Cache-Control」のことで合っていますでしょうか。
あっているとすればそこは「no-cache」と表示されています。
また、バージョンについては他社様との兼ね合いもあり変更ができません。
試すにしてもPHP5から7、Laravel4から5ですと、
ソースも大分手を入れなければならないのではないでしょうか。
そうなると、ちょっと時間が足りないかもしれません。
あなたの回答
tips
プレビュー