提交时避免 PHP 中的竞争条件:请不要多次单击“提交”!

2024-03-14

不久前,在线应用程序曾经说过,“不要多次点击提交”。现在已经消失了,对吧?例如,在 PHP 中如何防范这种情况?

我使用的一个解决方案是在会话中放置一个变量,这样您就不能每 10 秒多次提交到一个页面。这样数据库工作就完成了,因此可以进行正常检查。显然,这感觉就像是黑客攻击,而且可能确实如此。

Edit:感谢大家提供 Javascript 解决方案。很好,但这需要一些工作。 1)这是一个输入类型=图像,2)提交必须持续触发,直到斯普瑞的东西 http://labs.adobe.com/technologies/spry/说没关系。基本上,这个编辑只是我的抱怨,因为我想在看过 Spry 的东西之后我就能弄清楚。

Edit:并不是说任何人都会与 Spry 的东西集成,但这是我使用 document.getElementByid 的 Prototype 的最终代码。欢迎评论!

function onSubmitClick() {
    var allValid = true;
    var queue = Spry.Widget.Form.onSubmitWidgetQueue; 
    for (var i=0;i<queue.length; i++) {
        if (!queue[i].validate()) {
            allValid = false;
            break;
        }
    }

    if (allValid) {
        $("theSubmitButton").disabled = true;
        $("form").submit();
    }
}

由于某种原因,需要提交第二份表格......


您应该同时进行客户端和服务器端保护。

客户端- 禁用按钮,例如正如 cletus 所描述的那样,由 jquery 实现。

服务器端- 在表格中放置一个令牌。如果有两个提交具有相同的令牌,则忽略后者。使用这种方法,您可以免受CSRF http://en.wikipedia.org/wiki/CSRF.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

提交时避免 PHP 中的竞争条件:请不要多次单击“提交”! 的相关文章

  • PHP session.cookie_secure:设置为 true 时禁用会话

    当我设置以下配置时 ini set session cookie secure 1 我的整个应用程序的会话被禁用 我无法再写入或读取会话变量 sessionName us session name sessionName ini set s
  • 非加密用途的最快哈希值?

    我本质上是在准备要放入数据库的短语 它们可能格式错误 所以我想存储它们的简短散列 我将简单地比较它们是否存在 所以散列是理想的 我假设 MD5 在处理 100 000 个请求时相当慢 所以我想知道散列短语的最佳方法是什么 也许推出我自己的散
  • 从 varchar(100) 类型获取时间(HH:MM AM/PM)格式

    如何将字符串 RD OT 07 30 转换为时间 我只知道如何将 07 30 AM 转换为时间 下面的代码给了我一个空白数据 id strtoupper POST id query mysql query SELECT STR TO DAT
  • PHP函数:查找参数的变量名和函数调用行号

    我想做这样的事情来简化日志操作 知道我应该投入什么吗 1 and 2 function log var var line 1 var name 2 line filepath log date Y m d txt message line
  • 存储 PHP 数组的首选方法(json_encode 与序列化)

    我需要将多维关联数据数组存储在平面文件中以进行缓存 我偶尔可能会遇到需要将其转换为 JSON 以便在我的 Web 应用程序中使用的情况 但绝大多数时候我会直接在 PHP 中使用该数组 在此文本文件中将数组存储为 JSON 或 PHP 序列化
  • 防止隐藏的输入被更改

    这一直让我压力很大 我有一个隐藏的输入
  • DateTime::修改和夏令时切换

    Using 日期时间 修改 http php net manual en datetime modify php在 DST 边界上添加一个小时会导致它跳过一个小时 e g d new DateTime 2015 11 01 12 00 00
  • 从 PHP 中的字符串中删除转义序列

    我正在使用一个已转义字符序列的 mysqldump 文件 我需要知道字符串的长度作为其数据库值 但转储中包含转义字符 这会增加字符串的长度 我用过stripslashes 它正确地取消转义单引号和双引号 但它不会触及 r n 我担心其中还有
  • PHP实现的机票预订系统

    如何防止预订系统中的座位被重复预订 我正在用 PHP 和 MYSQL 制作一个航空旅行预订系统模型作为一个项目 我有一个小问题 仅在付款后 门票和座位详细信息才会永久存储在此处 座位号在付款前分配 假设人 1 预订了飞机上的座位 x 并支付
  • Ioncube 编码的文件是否可以解码?

    我是一名 php 开发人员 我的客户计划分发一个使用 Php 开发的软件 计划使用 ioncube 或类似软件对文件进行编码 在谷歌搜索时 我发现很少有人解码这些文件 这些文件使用 ioncube 甚至其他软件进行编码 如果您询问是否可以破
  • 将数组数据从 html 表单传递到 php 数组变量

    我有一张表格来记录一组项目的工作时间 该表单使用项目 ID 小时数和注释字段的数组 表单行是项目数量的循环 该表单将数据传递给 PHP 脚本进行处理 PHP 脚本没有看到数组中的值 它只是给我 Array 作为输出 文档和其他示例让我想知道
  • 如何修复 Nginx 自动 301 重定向到带有尾部斜杠的相同 URL?

    当我尝试将 Web 应用程序的子目录中的索引文件访问到相同的 URL 但附加了斜杠 时 Nginx 出现了不良行为 它正在重新路由请求 我有一个简单的 Web 应用程序 其中设置了一个根目录和其中的许多子目录 每个子目录中都有一个 inde
  • PHPMailer:如何将 Content-Type 设置为 multipart/alternative

    我正在使用 phpmailer 发送电子邮件 但消息的标题中带有 Content Type text html 我怎样才能将其更改为多部分 替代 它应该类似于 mail gt 我的配置是 mail new PHPMailer mail gt
  • Woocommerce 中的欧洲 GDPR 附加结帐验证复选框

    您好 我一直在尝试向我的 Woocommerce 结帐页面添加一个额外的条件复选框 该复选框与条款和条件相同 但包含有关新 GDPR 数据保护 的信息以及指向我的隐私政策的链接 他们必须在方框中打勾才能结帐 我一直在使用从此处找到的各种代码
  • setImageCompressionQuality 与 setCompressionQuality 之间有什么区别 - Imagick

    我在Imagick中找到了两种设置图像压缩质量的方法 A 设置图像压缩质量 B 设置压缩质量 所以我想知道哪一个是最好的以及为什么在以下条件下 我读到了setCompressionQuality方法仅适用于新图像 我正在尝试压缩文件 jpe
  • 如何解决“无法加载PEM客户端证书,OpenSSL错误:02001003:系统库:fopen:没有这样的进程”错误?

    如果这个问题很愚蠢 请原谅 但我是这个领域的新手 我需要通过 SSL 从 Drupal 7 站点连接到服务 我有一个扩展名为 p12 的文件及其密码 另外 我使用 PHP 7 1 1 和 Windows 7 64x 我使用以下命令将 p12
  • 在 JQuery ui 自动完成中显示图像

    我有一个带有 JQuery ui 自动完成功能的脚本 可以完美运行 有一个显示用户名字和姓氏的搜索过程 但在我的数据库中 还有用户的图片 我想将其显示在带有名字和姓氏的建议中 数据库中pic包含图片url 剧本 function searc
  • 我的设置未保存在 WordPress 主题选项页面中

    我正在尝试创建一个基于 WordPress 设置 API 的主题选项页面 当我在浏览器中检查 options php 页面时 例如http mysite com wordpress wp admin options php http mys
  • PHP strtotime() 未返回正确的月份

    由于当前月份 年份是 2012 年 1 月 为什么以下代码返回 2011 年 12 月而不是 2011 年 11 月 echo date F Y strtotime 2 months 如果有影响的话 这是在 PHP 5 3 0 上 要获得您
  • 在 PHP 中设置 HTTP 响应代码(在 Apache 下)

    给出以下两种在 PHP 中设置 HTTP 响应代码的方法 具体来说 在 Apache 下 方法一 http response code 404 方法二 header HTTP 1 0 404 Not Found 我的问题是 除了这个事实之外

随机推荐

  • 存储人类可读的 UUID 的最小方式是什么?

    存储人类可读且与数据库广泛兼容的 UUID 的最小方式是什么 我正在考虑使用十六进制值的某种字符数组 作为常见的方法 我认为将二进制数据 16 字节 编码为 Base64 可能是您想要的
  • 如何选择帖子的最后编辑版本?

    我有一个像SO这样的问答网站 我还有一个表格 其中包含问题和答案及其编辑版本 这是我的表结构 QandA id title body related type edited id 1 title1 question content NULL
  • 为什么在此示例中使用 tmp_name

    我对 php 很陌生 我正在查看一个关于文件上传的示例 在里面getimagesize 功能 FILES file temp name 当我回显 FILES file temp name 时 它显示以下输出 C xampp tmp phpD
  • 我应该如何在 ffmpeg 中使用破折号(不是 webm_dash_manifest!)格式?

    FFmpeg 有一种名为 dash 的格式 gt ffmpeg formats E dash DASH Muxer 这大概对应于 libavformat dashenc c 中的代码 我可以在网络上找到许多有关如何使用 WebM DASH
  • WPF 图像滚动器 - 寻找行为类似于图像的控件

    在 WPF 中 实现如下图所示的控件的最佳方法是什么 你有很多图像 并不是所有的图像都能立即看到 但你可以向右和向左进行一些分页 或者滚动 我不知道如何称呼它 侧面的两个按钮左右滚动并带来新图像 如果需要滚动图像 则可以使用简单的 List
  • 不使用 Anaconda 的 Spyder 安装

    我已经在 Windows 7 上安装了 Python 3 6 32 位 有没有办法在不下载 Anaconda WinPython 等的情况下安装 Spyder 您需要运行以下命令才能安装并运行Spyder3没有蟒蛇 1 python m p
  • 如何解决 chrome 自动完成与 vuetify 中标签重叠的问题?

    当尝试使用以下命令创建登录表单时outlinedVutify 中的文本字段 chrome 自动完成功能与labels
  • 如何创建带有圆角的 NSImageView?

    目前我想创建一个圆角 NSImageView 我是新手 怎么做 我不知道这是否有效 所以请尝试一下 我们会祈祷 在 iPhone 上您可以使用CALayer of any UIView the NSViewiOS 中的对应部分 以获得圆角
  • Autofac 与 MVC4:控制器没有默认构造函数

    我一直在 MVC3 中使用 Autofac 并且喜欢它 现在我正在尝试用MVC4来实现它 我通过包管理器控制台安装了 Autofac MVC4 和 Autofac WebApi 的预发行版本 Install Package Autofac
  • JqPivot和ajax加载数据

    Can someone post a demo or a piece of code to exemplify how to use jqpivot and loading data using ajax Thank you 我建议您检查免
  • 更改 C# Parallel.For 循环的增量值

    我想使用 TPL 将每次传递将迭代器增加 2 的 for 循环转换为并行 For 循环 数据不依赖于顺序或以任何方式受到限制 但我只想处理源数组的每个其他元素中的数据 即下面代码中的 Datalist 因此需要增加 2 我的 For 循环
  • 如何在 JSF 中关闭浏览器时使会话失效

    任何人都可以帮助我在用户关闭浏览器时使会话无效 每当用户关闭浏览器时 JSF 中的会话就会自动失效 Thanks 下面的链接可能会有所帮助 浏览器窗口关闭事件 https stackoverflow com questions 163195
  • iOS 上的 Mobile Safari 在大页面上崩溃

    我遇到一个问题 当页面变得太大时 使用 jQuery 加载和操作 DOM 时 Mobile Safari 会崩溃 我在 iPhone 和 iPad 上都遇到同样的问题 排除移动页面故障以查找错误的最佳方法是什么 是否存在可能导致 Mobil
  • 每次运行后,Xcode 6 都会在 iOS8 模拟器中不断重命名我的应用程序目录。

    我正在运行 Xcode 6 Beta 5 但自从第一个 Beta 版以来这种情况就一直发生 每次运行后 我的应用程序在模拟器中的目录都会被重命名 我花了一段时间才弄清楚这一点 我用它来获取文档的目录引用 NSString folder NS
  • 当我尝试卸载包含 NSSM 服务的软件时,失败

    对于以下安装程序包 我有服务XXXService当我安装我的包时 成功安装并运行 但卸载失败并出现错误并恢复 我怀疑该服务仍在运行 阻止删除main exe file 请帮助完成卸载工作 重现此错误的完整最小源是可用的 https gith
  • 将 R 与 php 连接

    我正在尝试以 php localhost 方式运行 R 代码 所以我按照这个例子 https www r bloggers com integrating php and r https www r bloggers com integra
  • GGPlot2 中的 NLS 回归,绘制 y=Ax^b 趋势线误差

    我正在尝试在一组 3 个数据点上拟合基本幂趋势线 就像您在 Excel 中模拟 y Ax b 函数一样 我有一个非常简单的数据集加载到 LCurve data 中 如下所示 MDPT 4 10 9 51 6 曲线下面积 287069 4 2
  • Matlab 中的分组箱线图:通用函数

    在看到 SO 中这篇很棒的文章后 matlab绘制分组箱线图最有效的方法 https stackoverflow com questions 15971478 most efficient way of drawing grouped bo
  • 更改 bootstrap vue 选项卡标题的标题颜色

    I m using bootstrap vue js to create a tab The result is like this 我只想更改选项卡标题颜色 因为它使用我项目中的默认颜色 并来自 bootstrap vue js 官方链接
  • 提交时避免 PHP 中的竞争条件:请不要多次单击“提交”!

    不久前 在线应用程序曾经说过 不要多次点击提交 现在已经消失了 对吧 例如 在 PHP 中如何防范这种情况 我使用的一个解决方案是在会话中放置一个变量 这样您就不能每 10 秒多次提交到一个页面 这样数据库工作就完成了 因此可以进行正常检查