PHP防止刷新重复POST是指在用户通过表单提交数据时,防止因用户刷新页面而导致重复提交相同的数据。这种情况可能会导致数据的重复插入或其他不期望的结果。
适用于任何需要用户提交表单的Web应用,特别是那些对数据一致性要求较高的应用,如电商平台的订单提交、用户注册等。
<?php
session_start();
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// 验证令牌
if (isset($_POST['token']) && $_POST['token'] === $_SESSION['token']) {
// 处理表单数据
// ...
// 清除令牌,防止重复提交
unset($_SESSION['token']);
} else {
echo "重复提交";
exit;
}
} else {
// 生成令牌
$_SESSION['token'] = bin2hex(random_bytes(32));
}
?>
<!DOCTYPE html>
<html>
<head>
<title>防止重复POST示例</title>
</head>
<body>
<form method="post">
<!-- 其他表单字段 -->
<input type="hidden" name="token" value="<?php echo $_SESSION['token']; ?>">
<button type="submit">提交</button>
</form>
</body>
</html>通过上述方法,可以有效防止因用户刷新页面而导致的重复POST请求,确保数据的一致性和系统的稳定性。