FORMのリロード対策1

トランザクショントークンで対応

1.入力フォーム処理
// トークン生成
$_SESSION['token'] = md5(uniqid().mt_rand());
$token = htmlspecialchars($_SESSION['token'], ENT_QUOTES);

// 中略

<form action="./result.php" method="POST">
<input type="submit" name="send" value="送信">
<input type="hidden" name="token" value="$token">
</form>

2.送信結果画面
// 多重送信対策
if (!(isset($_POST['send'], $_SESSION['token'], $_POST['token']) && 
$_SESSION['token'] == $_POST['token'])) {
    // 多重送信処理がされた場合、に if文内の処理が行われる
    require("error.php");
    exit();
} else {
    unset($_SESSION['token']);
}