フォームデータの再送信防止について
昨日の続き。
調べてみたらいくつか方法があるみたいで、下記サイトでは
・ページ遷移による対策
・セッションによる対策
・リファラによる対策
の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