二重投稿防止の履歴

cookieを使う

DBを参照する

セッションを使う

PHPコードサンプル

7: $taskId = mt_rand();
8: $_SESSION['taskId'] = $taskId;
9: $hiddenValue = md5($taskId);
10: //print($taskId.'<br>');//確認用
11: print('<form action="one_time_submit.php" method="post">');
12: print('<input type="hidden" value="' . $hiddenValue . '" name="taskId" />');
13: print('<input type="submit" value="submit" name="submit" />');
14: print('</form>');
15:
16: <?php
17: //one_time_submit.phpに記述
18: session_start();
19: $taskId = $_SESSION['taskId'];
20: //print($taskId.'<br>');//確認用
21: unset($_SESSION['taskId']);
22: if (md5($taskId) == $_POST['taskId']) {
23: //正常にsubmitされた時の処理
24: print('きちんと前の画面からsubmitされています。');
25: } else {
26: //二重投稿された場合や、直接アクセスされた場合の処理
27: print('フォームを通してアクセスして下さい。');
28: }

http://code.nanigac.com/source/view/178