POSTで検索した結果の一覧から、
ある一つをクリックして詳細画面に遷移。
詳細画面から、前の検索結果一覧に‘ブラウザの戻るボタン’で戻ると
『フォーム再送信の確認』がでる。
(ブラウザによっては ページの有効期限切れ とか)
普通に出ることがあったので個人的には気にしていなかったが
出ないサイトは出ないし、
確かに無いほうがスムーズなので調べて実装。
PHP/「ページの有効期限切れ」対策
http://www.glamenv-septzen.net/view/29
いろいろ探し回りましたが、結局上記のまとめで書かれているように
session_cache_limiter(‘private_no_expire’)
をコールすること に落ち着きました。 ※下記に追記あり
一覧側の session start より先、
つまり一番最初に上記を書いたら、難なく解決。
今回は検索結果の表示だから良いが、
DBの更新等が絡む場合はPOSTの再送信対策が必要となるよう。
2回登録されちゃったりするのはまずいからね。
・・只今細かい調整と追い込み中です。
【追記】
上記方法だと、ページの有効期限切れ画面は出ないのですが、
‘戻るボタン’で戻ったときに表示される画面はキャッシュ画面となります。
(つまり一番最初に表示した状態ママの画面にもどる)
なので、例えば検索結果一覧の中から一つの項目の「お気に入りに追加」をクリック
↓
お気に入り画面に遷移
↓
ブラウザのバックで戻ると、さっき表示していたままの一覧画面が表示される。
しかし!
せっかく、お気に入り追加済みの項目はきちんと「追加済み」の表示にして
お気に入りボタンを押せないような実装しているのに、
キャッシュ画面のため、さっき表示していたままの一覧だから、
まだ「お気に入りに追加」ボタンが押せる状態・・・「追加済み」に更新された状態にならない、ということに・・T-T
つまり、私のこの画面はキャッシュを呼んで欲しくないわけです。
だけど「戻る」でキャッシュを読まないで、最新を読みこませると、「ページの有効期間ぎれ」・・・
これはもう、「戻る」を押さなくてもストレスがない状態にするしか無い。
一覧⇔お気に入り画面 を、「戻る」ボタンで行ったり来たりさせない。
ユーザーのフローを考えてみると
一覧 で「お気に入り追加」を押して遷移してしまうから、一覧に戻りたいのにストレスが発生するので、
ajax非同期通信で、
一覧で「お気に入り追加」を押した時に遷移せず、そのまま「追加しました」とリアルタイムに吹き出し表示して、
ボタンを「お気に入り追加済み」に変えてしまう。
お気に入り画面には、ちゃんとメニューから行ってもらう。
ということに落ち着きました。
そして一覧の表記は以下に。
header(“Cache-Control: private”);
session_cache_limiter(‘none’);
参考https://colorage.jp/list.php
ページの有効期間切れを出す・出さないにしても
そもそもなんで出るのか、出てしまうその理由は本当に必要なのか
前提がサイトにより異なるので
それに沿って考えなくてはならないですね
—–
コメント