商务合作加微信:2230304070
学习与交流:PHP技术交流微信群
setTimeout 函数来延迟执行提交操作。function debounce(func, delay) {
let timer;
return function() {
clearTimeout(timer);
timer = setTimeout(() => {
func.apply(this, arguments);
}, delay);
};
}
const submitForm = debounce(function() {
// 在这里执行表单提交操作
}, 1000); // 延迟 1 秒执行
session_start();
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$token = uniqid(); // 生成唯一的 token
$_SESSION['submit_token'] = $token;
// 执行表单提交操作
unset($_SESSION['submit_token']); // 清除 token
}
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$submittedToken = $_POST['token'];
$storedToken = $_SESSION['submit_token'];
if ($submittedToken === $storedToken) {
// 执行表单提交操作
unset($_SESSION['submit_token']); // 清除 token
}
}
// 生成随机的 token
$token = md5(uniqid());
// 存储 token 到会话
$_SESSION['submit_token'] = $token;
// 在表单中嵌入 token
echo '<input type="hidden" name="submit_token" value="' . $token . '">';
// 处理表单提交时的校验
if ($_POST['submit_token'] === $_SESSION['submit_token']) {
// 处理表单提交
// 清除会话中的 token
unset($_SESSION['submit_token']);
}
$token = md5(uniqid());
echo '<input type="hidden" name="submit_token" value="' . $token . '">';
if ($_POST['submit_token'] === $token) {
// 处理表单提交
}
$currentTime = time();
$lastSubmitTime = $_SESSION['last_submit_time'] ?? 0;
if ($currentTime - $lastSubmitTime > 5) {
// 处理表单提交
$_SESSION['last_submit_time'] = $currentTime;
}
$userIP = $_SERVER['REMOTE_ADDR'];
$lastSubmitIP = $_SESSION['last_submit_ip'] ?? '';
if ($userIP !== $lastSubmitIP) {
// 处理表单提交
$_SESSION['last_submit_ip'] = $userIP;
}
if (!isset($_COOKIE['submit_cookie'])) {
// 处理表单提交
setcookie('submit_cookie', 'submitted', time() + 60); // 60秒内不允许重复提交
}
<button id="submitBtn" onclick="submitForm()">Submit</button>
<script>
let submitting = false;
function submitForm() {
if (!submitting) {
submitting = true;
// 执行表单提交操作
document.getElementById('submitBtn').disabled = true;
}
}
</script>
if (!isset($_SESSION['submit_timer'])) {
$_SESSION['submit_timer'] = time();
}
if (time() - $_SESSION['submit_timer'] > 10) {
// 处理表单提交
$_SESSION['submit_timer'] = time();
}
try {
// 尝试插入数据,如果插入失败会抛出异常
// 添加数据库的唯一性索引或唯一性约束以防止重复数据
} catch (Exception $e) {
// 处理插入失败的情况
}
$cacheKey = 'submit_status_' . $userIP;
if (!cache_get($cacheKey)) {
// 处理表单提交
cache_set($cacheKey, 'submitted', 60); // 60秒内不允许重复提交
}
if ($_POST['captcha'] === $_SESSION['captcha_code']) {
// 处理表单提交
// 清除验证码,以防止多次使用同一个验证码
unset($_SESSION['captcha_code']);
}


