代码大致如下
session_start();
if (!empty($_SESSION['state']) || $_SESSION['state'] == 1) {
exit('已提交过');
}
$_SESSION['state'] = 1;
session_commit();
/* 此处模拟数据库插入 */
sleep(3);
unset($_SESSION['state']);
exit('提交完毕');
作为一个接口, 直接post
但如果用软件连续提交10次Post
都是显示提交完毕
如何只有在数据库插入完毕后才能再次提交
把php文件设置文件编码,设置为UTF8,试下那
PHP生成表单时设置一个token隐藏域,提交后JS则可以辅助把提交按钮设为不可点击。
可以参考https://www.fffmo.com/1742.html
如果要防止客户端用程序恶意刷,这个只能用图形验证码+session间隔时间来防范了。
因为作为程序,识别验证码比较困难,同时每个session,每个用户限制提交次数,就断绝了这个用户大量提交的可能性。