フォームの二重投稿防止について

フォームの二重投稿防止について少しはまりました。
二重投稿とはフォームの投稿完了後、同画面上で更新ボタンを押してしまうと
同じ内容が二度送られてしまうことです。

フォーム画面.php

確認画面.php

投稿完了画面.php

上記の構成で
二重投稿対策として

①確認画面でセッションにユニークな文字列を持たせる
②フォームのPOSTデータにセッションの文字列(任意のname)をhiddenで投稿完了画面へデータを投げる
③完了画面でPOSTとセッションの文字列を比較し、一致すれば投稿。投稿後にセッションをunset。→更新を押しても2度目の投稿は作動しない

こんな感じで対策しておりました。

ところが、PCによってはうまくいかないケースがありました。

よくよく調べるとただ単に、クッキーを拒否しているPCでの事象と判明。。
何度やってもうまくいくわけがなく、、そんなこともあるんだなと納得。

今回は投稿完了と同時にDBへのinsertを行っていたため、

●投稿時、内容がかぶっていた場合リダイレクト

という処理にし、セッションは使わないことになりました。
いろいろやり方はあるかと思いますが、、なかなか奥が深い。

普通に更新ボタンを押す間もなく、完了画面で他にリダイレクトってのが多いみたいですね。