ページの有効期限切れ・フォーム再送信の確認 ・・を消す

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

ページの有効期間切れを出す・出さないにしても
そもそもなんで出るのか、出てしまうその理由は本当に必要なのか
前提がサイトにより異なるので
それに沿って考えなくてはならないですね

—–

コメント

タイトルとURLをコピーしました