、提交按钮置disabled
当用户提交后,立即把按钮置为不可用状态。这种用js来实现。
提交前代码如下: $("#submit").attr('disabled','true');
$("#submit").val("正在提交,请稍等");
执行后,把按钮置为原来状态
代码如下: $('#submit ').removeAttr('disabled');
$("#submit ").val("确定提交");
这样只是针对一些简单的前台提交了,如果我们自己做个表单站长提交给我们php逻辑层文件就过滤这那个js了。
过期时间法
用户提交按钮后生成一个token(每次业务提交token 为唯一值)存入session,并设置过期时间。当用户再此提交时,检测token是否一致且是否过期,若一致且没有过期,则认为提交了二次
例子 <?php
/*
* PHP简单利用token防止表单重复提交
* 此处理方法纯粹是为了给初学者参考
*/
session_start();
function set_token() {
  $_SESSION['token'] = md5(microtime(true));
}
function valid_token() {
  $return = $_REQUEST['token'] === $_SESSION['token'] ? true : false;
  set_token();
  return $return;
}
//如果token为空则生成一个token
if(!isset($_SESSION['token']) || $_SESSION['token']=='') {
  set_token();
}
if(isset($_POST['test'])){
if(!valid_token()){
   echo "token error";
  }else{
   echo '成功提交,Value:'.$_POST['test'];
  }
}
?>
<form method="post" action="">
  <input type="hidden" name="token" value="<?php echo $_SESSION['token']?>">
  <input type="text" name="test" value="Default">
  <input type="submit" value="提交" />
</form>
方法二 <?php
//开启session
session_start();
//如果有提交标识
if(isset($_GET['action']) && $_GET['action'] === 'save'){
  //如果有session且跟传过来的值一样才算提交
  if(isset($_SESSION['__open_auth']) && isset($_POST['auth']) && $_SESSION['__open_auth'] == $_POST['auth']){
   print_r($_POST);
   $_SESSION['__open_auth'] = null;//清空
  } else {
   //走起
   header("location: post.php");
  }
  exit();
}
//授权
$auth = $_SESSION['__open_auth'] = time();
?>
<!doctype html>
<html>
<head>
  <meta charset="UTF-8">
  <title>post</title>
</head>
<body>
  <form action="post.php?action=save" method="post">
  <ul>
    <li>
     <input type="hidden" name="auth" value="<?php echo $auth;?>">
     <input type="text" name="userName">
    </li>
    <li>
     <input type="password" name="userpass">
    </li>
    <li>
     <input type="submit" value="走起">
    </li>
    <li>
     <?php echo time(); ?>
    </li>
   </ul>
  </form>
</body>
</html>
mysql php数据库重复记录防止 <?php 
$link=mysql_connect(‘localhost’,’root’,’root’); //得到MySQL数据库连接 
$username=$_GET["name"]; //得到从客户端表单传过来的数据 
$q="select * from usertable where user_name='$username'"; 
mysql_query("SET NAMES gb2312"); //避免出现中文乱码 
$rs = mysql_query($q, $link); //查询数据库 
$num_rows = mysql_num_rows($rs); //得到查询结果的总行数 
if($num_rows==) 

$exec="insert into student (user_name) values ($username)"; 
mysql_query("SET NAMES gb2312"); 
mysql_query($exec, $link); //若没有此用户则将数据插入到数据库(注册用户) 
echo "用户注册成功!"; 

else 

echo "该用户名已存在,请重新选择用户名!"; 

?>
session过期法有非常重要的一点是一个session设置与提交成功与不成功时的一个session验证了,这个有点像登录一样的如果登录成功了我们要清除session这个原理也差不多。

PHP生成token防止表单重复提交的更多相关文章

  1. PHP简单利用token防止表单重复提交

    <?php /* * PHP简单利用token防止表单重复提交 * 此处理方法纯粹是为了给初学者参考 */ session_start(); function set_token() { $_S ...

  2. PHP简单利用token防止表单重复提交(转)

    <?php/* * PHP简单利用token防止表单重复提交 */function set_token() { $_SESSION['token'] = md5(microtime(true)) ...

  3. php通过token验证表单重复提交

    PHP防止重复提交表单 2016-11-08 轻松学PHP 我们提交表单的时候,不能忽视的一个限制是防止用户重复提交表单,因为有可能用户连续点击了提交按钮或者是攻击者恶意提交数据,那么我们在提交数据后 ...

  4. AOP+Token防止表单重复提交

    表单重复提交: 由于用户误操作,多次点击表单提交按钮 由于网速等原因造成页面卡顿,用户重复刷新提交页面 避免表单重复提交的方式: 1.页面上的按钮做防重复点击操作 2.在数据库中可以做唯一约束 3.利 ...

  5. PHP使用token防止表单重复提交的方法

    本文实例讲述了PHP使用token防止表单重复提交的方法.分享给大家供大家参考,具体如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 2 ...

  6. token防止表单重复提交

    出现表单重复提交的三种情况: 一.服务器响应缓慢,用户多次点击提交按钮. 二.提交成功后刷新页面. 三.提交成功后返回表单页面再次点击提交. package com.jalja.token; impo ...

  7. Token防止表单重复提交和CSRF攻击

    Token,可以翻译成标记!最大的特点就是随机性,不可预测,一般黑客或软件无法猜测出来. Token一般用在两个地方: 1: 防止表单重复提交 2: anti csrf攻击(Cross-site re ...

  8. java后端使用token处理表单重复提交

    保证接口幂等性,表单重复提交 前台解决方案:提交后按钮禁用.置灰.页面出现遮罩后台解决方案:   使用token,每个token只能使用一次1.在调用接口之前生成对应的Token,存放至redis 2 ...

  9. Struts2笔记——利用token防止表单重复提交

    在一些项目中经常会让用户提交表单,当用户点击按钮提交后,如果再次浏览器刷新,这就会造成表单重复提交,若是提交的内容上传至服务器并请求数据库保存,重复提交的表单可能会导致错误,然后跳转到错误界面,这是一 ...

随机推荐

  1. 二、Ubuntu14.04下安装Hadoop2.4.0 (伪分布模式)

    在Ubuntu14.04下安装Hadoop2.4.0 (单机模式)基础上配置 一.配置core-site.xml /usr/local/hadoop/etc/hadoop/core-site.xml ...

  2. tableView左滑删除功能

    实现三个代理方法即可 -(NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtI ...

  3. 锋利的jQuery-6--序列化函数serialize()和serializeArray()在表单提交中的作用

    在通过jQuery ajax提交表单的时候,通常用下边的方法获取表单内容. var form = 'add-account-form'; //表单id $('#' + form).submit(fun ...

  4. html5摇一摇[转]

    写在前面 年底了,有些公司会出一个摇奖的活动,今天在家没事就搜了一下这方面的资料. 原文地址:http://www.cnblogs.com/waitingbar/p/4682215.html 测试 效 ...

  5. ExtJS学习之路第七步:contentEl与renderTo的区别

    上回在Panel的应用中我们应该能大致区分开conteEl和renderTo,这回我们从定义中区分. 在Panel的API中, contentEl:String指定一个现有的HTML元素或者id作为此 ...

  6. SpringMVC利用拦截器防止SQL注入

    引言 随着互联网的发展,人们在享受互联网带来的便捷的服务的时候,也面临着个人的隐私泄漏的问题.小到一个拥有用户系统的小型论坛,大到各个大型的银行机构,互联网安全问题都显得格外重要.而这些网站的背后,则 ...

  7. PowerDesigner15在win7-64位系统下对MySQL反向工程

    由于机器是win64位的,下载的64的connector安装测试成功,但是在powerdesigner中测试连不上,总算在下面这边博友中找到解决方案! http://blog.csdn.net/web ...

  8. back(返回)键总结

    对于一般的android手机,都提供了四个(目前主流三个)按键.这几个按键中,back(返回)键用得比较多,对back键出发的事件一般是通过重写onKeyDown(int keyCode, KeyEv ...

  9. ios 百度地图api 入门

    百度地图api 官方教程: http://developer.baidu.com/map/index.php?title=iossdk 这个非常好, 很适合新手 CLLocationCoordinat ...

  10. 当前标识(IIS APPPOOL\DefaultWebSite)没有对“C:\Windows\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET Files“的写访问权限

    将C#写的webservice发布到IIS后,通过浏览器访问测试,出现如下错误: 根据提示:对Tempory ASP.NET Files没有写访问权限,在资源管理其中定位到这个地址,发现没有这个文件夹 ...