我想知道我可以使用哪些技术来避免用户在刷新页面并再次选择提交时两次发布表单?
例如我里面有表格注册.php并在内部处理它注册.php。
1st我可以在另一个文件中处理,例如注册进程.php并重定向到 register.php,但随后我必须创建大约 20 个新页面并重新定位大量代码,我不想要这个选项。
2nd我可以玩headers
我不记得确切的技巧,但有一些不好的经历 - 用户刷新后在页面上看到旧数据......
3rd我可以在成功后重定向到某些虚拟.php和来自虚拟.php跳回到注册.php那么即使他们刷新页面浏览器也不会重新发布,但是它不能防止他们使用返回键并选择重新发布,我知道我的页面可能会过期,但我发现对我和其他用户来说看到页面过期错误的烦人经历。
4th一旦页面加载,每个表单都会使用一些唯一的“访问密钥”,该密钥将与表单一起发布,并且一旦使用就无法重复使用,但是我对该功能的逻辑有点挣扎。如何知道密钥已被使用而不将其存储在 MySQL DB 中,我认为基于时间的访问也不是很好,因为某些用户在页面打开和表单提交之间可能需要很长时间。
我需要更多建议如何避免用户再次重新提交表单。
尝试这个:
<?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 请求。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)