
正文
php数据库防止重复提交,php数据库防止重复提交的方法
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
关于php网站重复提交的问题
客户端提交表单到服务器时,比对表单中的token与session中的token是否一致。若不一致则认为是无效的请求。不管第2步的校验是否通过,token只要使用一次后就立即作废(即:从session中销毁)。同时token也可以关联时间信息,超时后也自动作废。这样,即便客户端重复提交,也只有第一次的请求能够成功。
我们要做的就是告诉浏览器:放心刷新。这也是解题的思路:在刷新时把表单撤了。当然,我的情况可能和你的不同,我写的是弹窗式的登录页面,所以,我用Jquery写了个Load(“b.html”),b.html里只有一个。这样做就可以保证a.html里没有。只有你的网页里有,chrome就会提示“重新提交表单”。
大致看了下,主要两个问题:1)session_start(),代码里仅在没有提交且没有生成过session时才执行,这直接导致提交时$_SESSION未定义 2)隐藏值originator,value=?=$value?,$value从哪来的?应该是$code吧。
在浏览器返回上一步操作的时候,上一个页面的表单存在缓存,所以执行普通的刷新操作会有个浏览器的警告提示,这时候需要进行强制刷新的操作。只需要将window.location.reload()改为:window.location.href=window.location.href即可。
常见的重复提交问题 a点击提交按钮两次。b点击刷新按钮。c使用浏览器后退按钮重复之前的操作,导致重复提交表单。d使用浏览器历史记录重复提交表单。e浏览器重复的HTTP请求。防止表单重复提交的方法 a禁掉提交按钮。表单提交后disabled现在的按钮或者取消该按钮的点击事件或者默认事件。
你是否遇到过重复提交的问题?要解决这个问题其实并不难。这里有一个简单的方法避免同一表单的重复提交。首先,我们可以定义一个session变量用来保存一个表单的提交序列号。这里我定义为$userLastAction。
相关问答
Q1: ...数据时检查Mysql数据库内容是否存在,避免重复录入?
数据库服务器执行的单位是“事务”,你应该把上述动作包装成一个事务,在事务的开头用lock table把表加锁,最后在解锁。
select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_SCHEMA=dbname and TABLE_NAME=tablename ; 如果表不存在就建立这个表,那么可以直接用 create table if not exists tablename.这样的指令来建立,不需要先去查询表是否存在。
方法二:LEFT JOIN优化推荐使用LEFT JOIN删除重复数据:DELETE t1 FROM bus_mark_plat_ver t1 LEFT JOIN ... WHERE tmax_id IS NULL; 这种方法利用索引加速查询,且查询灵活性高,但可能在处理大量数据和复杂连接条件时影响性能。
一般情况下,数据库去重复有以下那么三种方法:第一种:两条记录或者多条记录的每一个字段值完全相同,这种情况去重复最简单,用关键字distinct就可以去掉。例:SELECTDISTINCT*FROMTABLE 第二种:两条记录之间之后只有部分字段的值是有重复的,但是表存在主键或者唯一性ID。
关键的问题是在userid重复的时候你希望如何处理?如果重复了不做处理,那就直接插入,失败了就算了。如果重复了就修改,那么把插入语句的INSERT改为REPLACE,这样系统自动检查是否重复,重复的就做UPDATE,无重复就新插入。
Q2: 如何避免表单的重复提交
1、防止表单重复提交的两种方式 1)通过重定向 采取请求转发的方式完成表单内容的添加会造成内容的重复插入。
2、设置HTTP报头,控制表单缓存,使得所控制的表单不缓存信息,这样用户就无法通过重复点击按钮去重复提交表单。 但是这样做也有局限性,用户在提交页面点击刷新也会造成表单的重复提交。通过PRG设计模式(用来防止F5刷新重复提交表单):PRG模式通过响应页面Header返回HTTP状态码进行页面跳转替代响应页面跳转过程。
3、直接在数据库里添加唯一约束或创建唯一索引,一旦发现用户重复提交了,直接抛出警告或者提示,或者只处理第一次提交的数据,这是最直接有效的方法,要求前期的数据库设计和架构要考虑周全.六:Post/Redirect/Get模式 在提交后执行页面重定向,这就是所谓的Post-Redirect-Get (PRG)模式。
4、首先通过js代码,当用户点击提交按钮后,屏蔽提交按钮使用户无法点击提交按钮或点击无效,从而实现防止表单重复提交。其次在数据库建表的时候在ID字段添加主键约束,用户名、邮箱、电话等字段加唯一性约束。确保数据库只可以添加一条数据。
5、你是否遇到过“重复提交”的问题?要解决这个问题其实并不难。这里有一个简单的方法避免同一表单的重复提交。首先,我们可以定义一个session变量用来保存一个表单的提交序列号。这里我定义为“$userLastAction”。
6、用户提交表单时可能因为网速的原因,或者网页被恶意刷新,致使同一条记录重复插入到数据库中,这是一个比较棘手的问题。我们可以从客户端和服务器端一起着手,设法避免同一表单的重复提交。1.使用客户端脚本 提到客户端脚本,经常使用的是JavaScript进行常规输入验证。
Q3: php如何防止重复提交
直接在数据库里添加唯一约束或创建唯一索引,一旦发现用户重复提交了,直接抛出警告或者提示,或者只处理第一次提交的数据,这是最直接有效的方法,要求前期的数据库设计和架构要考虑周全.六:Post/Redirect/Get模式 在提交后执行页面重定向,这就是所谓的Post-Redirect-Get (PRG)模式。
最常用的方法就是利用token。即:在生成页面的时候生成一个token(随机字符串),并把它同时写入表单的某个hidden中,和服务端的session中。客户端提交表单到服务器时,比对表单中的token与session中的token是否一致。若不一致则认为是无效的请求。
我们要做的就是告诉浏览器:放心刷新。这也是解题的思路:在刷新时把表单撤了。当然,我的情况可能和你的不同,我写的是弹窗式的登录页面,所以,我用Jquery写了个Load(“b.html”),b.html里只有一个。这样做就可以保证a.html里没有。只有你的网页里有,chrome就会提示“重新提交表单”。
关于php数据库防止重复提交和php数据库防止重复提交的方法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。






