在 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 秒或更短时,可以将它删除。否则将其存储。time 函数会被调用,且值会被赋予 posttimer 会话变量。

更新于:2020-04-09

2 千次浏览

开启你的 职业生涯

通过完成课程进行认证

开始
广告