当前位置: 首页 > 编程笔记 >

在PHP中提交表单时如何防止多次插入?

葛泳
2023-03-14
本文向大家介绍在PHP中提交表单时如何防止多次插入?,包括了在PHP中提交表单时如何防止多次插入?的使用技巧和注意事项,需要的朋友参考一下

提交表单时,PHP会话可用于防止多次插入。PHP会话设置一个会话变量(例如$ _SESSION ['posttimer']),该变量设置POST上的当前时间戳。在PHP中处理表单之前,请检查$_SESSION ['posttimer']变量是否存在,并检查特定的时间戳差异(例如2或3秒)。这样,可以识别并删除实际上是重复的那些插入。

简单形式-

// form.html
<form action="my_session_file.php" method="post">
   <input type="text" name="bar" />
   <input type="submit" value="Save">
</form>

上面对'my_session_file.php'的引用将包含以下代码行-

示例

if (isset($_POST) && !empty($_POST)) {
   if (isset($_SESSION['posttimer'])) {
      if ( (time() - $_SESSION['posttimer']) <= 2) {
         // less then 2 seconds since last post
      } else {
         // more than 2 seconds since last post
      }
   }
   $_SESSION['posttimer'] = time();
}

输出结果

这将产生以下输出-

The unique form submitted data.

设置了posttimer会话变量,并且在上一次POST操作之前有2秒或更短的时间差时,可以将其删除。否则将被存储。调用时间函数,并将值分配给后定时器会话变量。

 类似资料:
  • 不知道你是否曾经看到过一个论坛或者博客,在一个帖子或者文章后面出现多条重复的记录,这些大多数是因为用户重复递交了留言的表单引起的。由于种种原因,用户经常会重复递交表单。通常这只是鼠标的误操作,如双击了递交按钮,也可能是为了编辑或者再次核对填写过的信息,点击了浏览器的后退按钮,然后又再次点击了递交按钮而不是浏览器的前进按钮。当然,也可能是故意的——比如,在某项在线调查或者博彩活动中重复投票。那我们如

  • 我有一个表单,其中某个地方有一个提交按钮。 然而,我想以某种方式‘捕获’提交事件并防止它发生。 有什么办法我能做到这一点吗? 我不能修改submit按钮,因为它是自定义控件的一部分。

  • 问题内容: 我有一个简单的表格,我不想多次意外提交。 当他们第一次看到该页面时,我可以轻松地阻止他们进行多次单击,但是我无法控制他们单击“后退”按钮。 因此,在与Struts合作之后,我决定采用表单提交令牌。 有更容易的方法吗?Seam中已经有此功能吗?如果没有,我应该如何在Seam中构建此功能? //编辑//这里只是澄清一下,我不需要某些东西可以防止用户双击。已经解决了。 具体用例如下:用户单击

  • 问题内容: 我在网上浏览了很多,其中包括几个堆栈溢出示例,以解决该问题。具体来说,我尝试了以下方法: 两者都不如广告中所述。还有其他建议吗?请仅提供角度建议。谢谢。 问题答案: 您非常接近答案。您唯一错过的是使用调用按钮上的函数。 另一个问题是,控制器中的功能应该是,而不是 工作示例: index.html应该类似于: 您的控制器application.js就像:

  • 问题内容: 在下一页中,使用Firefox的“删除”按钮提交表单,但“添加”按钮不提交。如何防止“删除”按钮提交表单? 问题答案: 你正在使用HTML5按钮元素。请记住,原因是此按钮具有默认的提交行为,如W3规范所述,如此处所示: W3C HTML5按钮 因此,你需要明确指定其类型: 为了覆盖默认的提交类型。我只想指出发生这种情况的原因=)

  • 1、通过JavaScript屏蔽提交按钮(不推荐) 2、给数据库增加唯一键约束(简单粗暴) 3、利用Session防止表单重复提交(推荐) 4、使用AOP自定义切入实现