php – 如何防止“确认表单重新提交”对话框?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – 如何防止“确认表单重新提交”对话框?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2537字,纯文字阅读大概需要4分钟。
内容图文
![php – 如何防止“确认表单重新提交”对话框?](/upload/InfoBanner/zyjiaocheng/715/ddf18b08ef6741aab43140dea4dbadd9.jpg)
如何在提交后清除表单中的信息,以便在页面刷新后不显示此错误?
查看图片(来自chrome):
该对话框包含以下文字:
The page that you’re looking for used
information that you entered. Returning to that
page might cause any action you took to be
repeated. Do you want to continue?
我希望这个对话框不会出现.
解决方法:
编辑:自从我最初发布这个答案已经有几年了,尽管我得到了一些赞成票,但我对之前的答案并不满意,所以我完全重做了.我希望这有帮助.
何时使用GET和POST:
摆脱此错误消息的一种方法是使您的表单使用GET而不是POST.请记住,这并不总是一个合适的解决方案(请参阅下文).
如果您正在执行不想重复的操作,正在传输敏感信息,或者您的表单包含文件上载或发送的所有数据的长度超过~2000 characters,请始终使用POST.
何时使用POST的示例包括:
>登录表单
>联系表格
>提交付款表格
>添加,编辑或删除数据库条目的内容
>图像上传器(注意,如果使用带有< input type =“file”>字段的GET,则只会将文件名发送到服务器,99.73%的时间不是您想要的.)
>包含许多字段的表单(如果使用GET,将创建一个长URL)
在任何这些情况下,您都不希望人们刷新页面并重新发送数据.如果您要发送敏感信息,使用GET不仅不合适,这将是一个安全问题(即使表单是由AJAX发送的),因为敏感项目(例如用户的密码)是在URL中发送的,因此会显示在服务器访问日志中.
使用GET基本上是其他任何东西.这意味着,当您不介意重复时,对于您可以提供直接链接的任何内容,当没有传输敏感信息时,当您非常确定您的URL长度不会失控时当您的表单没有任何文件上传时.
例子包括:
>在搜索引擎中执行搜索
>用于浏览网站的导航表单
>使用随机数或一次性密码(例如电子邮件中的“取消订阅”链接)执行一次性操作.
在这些情况下,POST将是完全不合适的.想象一下,如果搜索引擎使用POST进行搜索.每次刷新页面时都会收到此消息,并且您无法将结果URL复制并粘贴给人员,他们必须自己手动填写表单.
如果您使用POST:
对我来说,在大多数情况下,即使弹出“确认表单重新提交”对话框,也会显示存在设计缺陷.由于用于执行破坏性操作的POST的本质,Web设计人员应该通过意外(或有意)刷新页面来防止用户多次执行它们.许多用户甚至不知道这个对话的含义,因此只需点击“继续”即可.如果那是在“提交付款”请求之后怎么办?付款是否会再次发送?
所以你会怎么做?幸运的是,我们拥有Post/Redirect/Get设计模式.用户向服务器提交POST请求,服务器将用户的浏览器重定向到另一个页面,然后使用GET检索该页面.
这是一个使用PHP的简单示例:
if(!empty($_POST['username'] && !empty($_POST['password'])) {
$user = new User;
$user->login($_POST['username'], $_POST['password']);
if ($user->isLoggedIn()) {
header("Location: /admin/welcome.php");
exit;
}
else {
header("Location: /login.php?invalid_login");
}
}
请注意,在此示例中,即使密码不正确,我仍然会重定向回登录表单.要向用户显示无效的登录消息,请执行以下操作:
if (isset($_GET['invalid_login'])) {
echo "Your username and password combination is invalid";
}
内容总结
以上是互联网集市为您收集整理的php – 如何防止“确认表单重新提交”对话框?全部内容,希望文章能够帮你解决php – 如何防止“确认表单重新提交”对话框?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。