フォームデータの再送信防止について

昨日の続き。

調べてみたらいくつか方法があるみたいで、下記サイトでは

・ページ遷移による対策

・セッションによる対策

リファラによる対策

の3パターンが紹介されていた。

http://d.hatena.ne.jp/gravit/20111020/1319141223


中でもページ遷移を使った方法が、環境を選ばず有効だということなので試してみた。


ページ遷移による方法はphpのheader関数を使って実現する。

header関数は、HTTPヘッダを送信できる関数で、


<?php
header('Location: http://www.example.com/');
exit;
?>

という風に、他のWebページやファイルを呼び出すことができる。

で、このとき、自分自身を再帰的に呼び出してあげれば、POSTが行われていない状態を作り出すことができるので、その後更新ボタンを押したとしても、直前で何もPOSTしていないので多重投稿を防げるといった感じ。

多分。

ちなみにheader関数を呼び出す前に、何か出力をしていると失敗するとのこと。
http://www.php.net//manual/ja/function.header.php