在 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 会话变量。
广告