防止表单重复提交的解决方案非常的简单,我们下面两个例子都是生成一个随机的token验证用户是不是由我们站内提交并且进行重复验证即可实现了。

在网上搜索了一下有很多站长都这样说的

1、提交按钮置disabled

当用户提交后,立即把按钮置为不可用状态。这种用js来实现。

提交前代码如下:

 代码如下 复制代码

$("#submit").attr('disabled','true');

$("#submit").val("正在提交,请稍等");

执行后,把按钮置为原来状态

代码如下:

 代码如下 复制代码

$('#submit ').removeAttr('disabled');

$("#submit ").val("确定提交");

这样只是针对一些简单的前台提交了,如果我们自己做个表单站长提交给我们php逻辑层文件就过滤这那个js了。

过期时间法

用户提交按钮后生成一个token(每次业务提交token 为唯一值)存入session,并设置过期时间。当用户再此提交时,检测token是否一致且是否过期,若一致且没有过期,则认为提交了二次

例子

 代码如下 复制代码

/*

* 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'];

}

}

?>

方法二

 代码如下 复制代码

//开启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();

?>

post

mysql php数据库重复记录防止

 代码如下 复制代码

$link=mysql_connect(‘localhost’,’root’,’1234’); //得到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==0)

// 烈火? liehuo.net 欢迎复制,拒绝恶意采集 liehuo.net

{

$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 表单重复提交,PHP生成token防止表单重复提交2个例子相关推荐

  1. 用python生成九九乘法表的指令_Python中生成九九乘法表的方法有哪几种?

    九九乘法表是我们计算的基础,在Python中可以生成九九乘法表.大致有三种方法:列表推导式法.for循环法.while嵌套循环法.具体使用代码请看本文. 方法一.列表推导式法for i in rang ...

  2. Django删除数据表后,再重新生成新数据表

    删除数据表后,数据库的Django migrations数据未删除,如果直接命令行调用如下命令,是不会再生成数据表的 Python manager.py makemigrations Python m ...

  3. mysql 数据展示装置_实时生成数据宽表的方法和装置与流程

    本发明涉及计算机技术领域,尤其涉及一种实时生成数据宽表的方法和装置. 背景技术: 数据仓库是面向主题的.集成的.相对稳定的.随时间不短变化得数据集合,用以支持经营管理中的决策制定.数据仓库中的数据面向 ...

  4. 【Flask项目2】生成token和验证token(11)

    用户登录 用户登录的功能我们使用 Json Web Token(JWT) 来为登录用户生成token令牌,并返回给客户端,客户端有了令牌之后,每次访问服务器,都携带Token,后台经过验证就能知道当前 ...

  5. 数据库表TreeView树的快速生成

    数据库表TreeView树的快速生成 根据数据表的内容生成TreeView树状结构,通常的做法就是从顶级开始,然后逐项递归查询遍历生成.这种方法在实现上容易做到,也很容易想到,但是效率比较低,因为数据 ...

  6. 手动生成token_生成 Token

    # 生成 Token Token 是一种动态密钥,通过 AppKey.AppSecret.用户名.有效时间戳等参数生成,安全性较高.在正式生产环境等对安全要求较高的场景中,我们推荐使用 Token 鉴 ...

  7. Excel插件E灵:按家庭建表,创建一户一表。将明细表转成一户一表

    单击播放视频: 教你将Excel明细表转换成一户一表,即按家庭创建新表 01需求概述 图1是档案明细表,图2是家庭收入采集表的模板样式.现要求将明细表转换成家庭收入采集表,有几个家庭就生成几份单独的采 ...

  8. form 表单提交,防止重复提交,加token

    大体步骤分为: 1.通过java 生成随机数放在http 的header 里面 String token = IdentityUtil.uuid32();         getRequest().g ...

  9. Django提交表单报错:CSRF token missing or incorrect.

    1.在Django提交表单时报错:Django提交表单报错: CSRF token missing or incorrect 具体报错页面如下: 2.有道词典翻译后如下: 通常,当存在真正的跨站点请求 ...

最新文章

  1. 隐藏Nginx版本号的安全性与方法
  2. CSS自定义鼠标样式。JS获取鼠标坐标,实现提示气泡框跟随鼠标移动
  3. ORC文件存储格式的深入探究
  4. spring配置xml文件_XML配置文件中的Spring配置文件
  5. Ceph:一个新时代的开始
  6. Leetcode796.Rotate String旋转字符串
  7. 河南计算机基础知识会考,2011河南事业单位备考计算机基础知识试题(含答案 )...
  8. 无恶意的协议才有效力
  9. mysql数据库多表查询出来多条重复数据--处理方法--distinct
  10. 电脑桌面没有计算机图标鼠标也点不起来,电脑桌面上的图标不见了,鼠标也没用了该怎么办呢?...
  11. Android WebView 调用相机、相册,压缩图片后上传
  12. Web前端面试常用技巧
  13. 三星发布家用microLED电视,LG感到压力很大
  14. 云计算中心怎么选址?
  15. CyclicBarrier---JDK1.8源码分析
  16. spring restTemplate的坑----会对String类型的url中的特殊字符进行转义
  17. 无公网IP远程黑群晖【内网穿透】
  18. 用vb脚本语言找出c盘所有文件及其子文件中后缀名为.txt的文档,2012年3月计算机二级VB练习题及答案:文件...
  19. kali linux 2018.1版下安装w3af 【超详细】
  20. 怎样用python生成中文字符画_如何利用Python实现图片转字符画详解

热门文章

  1. 【快速安装Docker服务及Docker配置、Docker常用命令。】
  2. Windows环境下Anaconda-Navigator出现闪退、无法打开问题的解决方案记录
  3. tensorflow 各个版本的 CUDA 以及 Cudnn 版本对应关系
  4. 无法启动ServletWebServerApplicatio错误记录
  5. 利用Github搭建免费图床
  6. sql使用逻辑控制语句
  7. 人生价值观的培养和建立
  8. ddos常见攻击报文
  9. 安装meme_我见过的最好JavaScript Meme,详细说明了
  10. 游泳后精疲力尽_精疲力尽的编程后如何重回正轨