在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秒或更短的时间差时,可以将其删除。否则将被存储。调用时间函数,并将值分配给后定时器会话变量。