js的onsubmit事件会在form表单确认提交的时候触发,因此我们在防止form表单重复提交的时候,可以在这上面添加一段代码就可以了,使用非常的简单。
onsubmit="getElementById('dosubmit').disabled=true;return true;"
整段js代码很简单,如果你不知道在哪儿添加form表单重复提交的代码,下面的例子可以借鉴。
<form onsubmit="getElementById('dosubmit').disabled=true;return true;" action="xxx.php" method="post"> 用户名:<input type="text" name=""/> 密码:<input type="text" name=""/> <input id="dosubmit" type="submit" value="提交"> </form>
在session中存放一个特殊标志。
在服务器端,生成一个唯一的标识符,将它存入session,同时将它写入表单的隐藏字段中,然后将表单页面发给浏览器,用户录入信息后点击提交,在服务器端,获取表单中隐藏字段的值,与session中的唯一标识符比较,相等说明是首次提交,就处理本次请求,然后将session中的唯一标识符移除;不相等说明是重复提交,就不再处理。
这使你的web应用有了更高级的XSRF保护。
请见如下代码:
<?php
session_start();
//根据当前SESSION生成随机数
$code = mt_rand(0,1000000);
$_SESSION['code'] = $code;
?>
在页面表单上将随机数作为隐藏值进行传递,代码如下:
<input type="hidden" name="originator" value="<?=$code?>">
在接收页面的PHP代码如下:
<?php
session_start();
if(isset($_POST['originator'])) {
if($_POST['originator'] == $_SESSION['code']){
// 处理该表单的语句,省略
}else{
echo ‘请不要刷新本页面或重复提交表单!’;
}
}
?>