なので、使うときは考慮してね。
<?php $act = isset($_POST['act']) ? $_POST['act'] : 'init'; $data = isset($_POST['data']) ? $_POST['data'] : ''; $ticket = ''; session_start(); // 初期化処理 if ($act == 'init') { $act = 'check'; } // チェック処理 else if (($act == 'check') || ($act == 'regist')) {
if (チェック処理正常) { $act = 'regist'; $ticket = time(); $_SESSION['ticket'] = $ticket; }
// 登録処理
else { // 2重ポスト時 if (empty($_SESSION['ticket'])) { // 2重ポストされたときの処理 } // 不正なポスト時 else if ($ticket != $_SESSION['ticket']) { // 不正な処理 } // 正常なポスト時 else { // 先にチケットを空にする unset($_SESSION['ticket']); // 登録処理 if (登録処理正常) {
header("Location: 登録完了ページのURL", true, 303);
exit(); } else { }
} } } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>sample</title> <meta name="keywords" content=""> <meta name="description" content=""> </head> <body> <form method="post"> <input type="text" name="data" value="<?php echo $data ?>"> <input type="submit" value="<?php echo $caption ?>"> <input type="hidden" name="ticket" value="<?php echo $ticket ?>"> <input type="hidden" name="act" value="<?php echo $act ?>"> </form> </body> </html>