gpt4 book ai didi

html - PHP 避免浏览器在页面刷新时重新发布 $_POST?

转载 作者:太空狗 更新时间:2023-10-29 15:08:50 25 4
gpt4 key购买 nike

我想知道我可以使用什么技术来避免用户在刷新页面并再次选择提交时两次发布表单?

例如我在 regiter.php 中有表单并在 register.php.

中处理它

1st 我可以在另一个文件中处理,例如register_process.php 并重定向到 register.php,但随后我必须创建大约 20 个新页面并重新定位大量代码,我不想要该选项。

第 2 我可以玩 headers 我不记得确切的技巧,但有一些不好的经验 - 用户在刷新页面后看到页面上的旧数据...

3rd 我可以在成功后重定向到一些 dummy.php 并从 dummy.php 跳回到 register.php 然后即使他们刷新页面浏览器也不会重新发布,但是它不能防止他们使用 后退按钮 并选择重新发布,我知道我可以使页面过期,但我发现对我和可能其他用户来说看到页面过期错误的恼人经历。

4 在页面加载后为每个表单使用一些唯一的“访问 key ”,该页面将随表单一起发布,并且一旦使用就不能重复使用,但是我有点难以理解该功能的逻辑。如何在不将 key 存储在 MySQL 数据库中的情况下知道 key 被使用,我认为基于时间的访问也不是很好,因为有些用户在页面打开和表单提交之间可能需要很长时间。

我需要更多关于如何避免用户重新提交表单的建议。

最佳答案

试试这个:

<?php
session_start();
if( strcasecmp($_SERVER['REQUEST_METHOD'],"POST") === 0) {
$_SESSION['postdata'] = $_POST;
header("Location: ".$_SERVER['PHP_SELF']."?".$_SERVER['QUERY_STRING']);
exit;
}
if( isset($_SESSION['postdata'])) {
$_POST = $_SESSION['postdata'];
unset($_SESSION['postdata']);
}

这将基本上保存 POST 数据并导致浏览器重新请求为 GET 请求。

关于html - PHP 避免浏览器在页面刷新时重新发布 $_POST?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13889198/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com