0

我有一个 php 表单,它有时只会重复收到的电子邮件。我已经对代码进行了三次检查,没有任何东西可能会造成循环。我还进行了一个会话,以防止将相同的信息发送并插入数据库..我仍然收到某些电子邮件几次..

我试图重新创建用户可能发送这些电子邮件的方式以及可能导致它的原因。我发现导致这种重复的原因是多次单击提交按钮。我点击提交按钮的次数是我收到的重复电子邮件的数量。

有谁知道为什么会发生这种情况?我该如何预防?

4

2 回答 2

1

当您多次单击提交按钮时,它正在向服务器发出 x 请求并且您收到 x 邮件。为避免这种情况,您可以使用以下方法。

  • 使用表单令牌,因此一份表单仅在一次有效。
  • 首次单击后使用 javascript 禁用提交按钮以避免多次提交。
于 2013-04-14T06:16:18.517 回答
0

做一些事情来设置带有时间戳的会话变量。如果时间戳小于 30 秒,则死亡。

<?php
session_start();
$sTime = time() - 15;
if($sTime > $_SESISON['submit_timestamp']){
    // process form
} else {
    // some sort of error handling if you want it.
}
?>
于 2013-04-14T07:53:34.923 回答