我想知道是否有一种方法可以在刷新时停止重新发送html窗体的页面。从刷新重新发送窗体停止页面
回答
您可以将Location
标题发送到正在处理表单输入的脚本中的其他URL。这个新的URL将可用于浏览器而无需发送表单数据。
我用这个。非常感谢。在处理完想要发生的事情之后,我刚刚重定向了同一页面。 – Darren 2011-12-29 21:39:27
我不认为有这样做的好方法。我们过去完成这项工作的方式是在日期和日期之间设置一个最短时间last_modified
。如果你还没有等一个小时就说,这个帖子会被拒绝。
停止一个你无法控制的客户端(浏览器)从做一些事情是不可能的。然而,有可能 - 对你来说很容易 - 硬化您的应用程序在此:
- 当你表现形式,创建一个随机令牌,将其存储在会话中,并将其添加到窗体作为隐藏现场
- 当您收到填好的表格,检查令牌对会话,如果它不匹配忽略的数据,如果它不匹配清除会话令牌和处理数据
任何标题或其他技巧可能会或可能不适用于浏览器和人们刷新没有MALICE,但他们definitly不会帮助攻击者。
我知道的唯一诀窍就是让表单提交返回一个带有链接的页面,您可以通过javascript(元刷新,无论什么)单击链接到第三页。
这个想法是当你打F5时最终刷新的东西是链接页面而不是表单提交页面。
使用邮政/重定向/获取:http://en.wikipedia.org/wiki/Post/Redirect/Get
在PHP程序以代码的形式,那么不输出任何东西把这个header('Location: http://www.example.com/foo.php');
(显然替换URL),做另一个页面上的显示。如果你需要传递任何东西到该页面,然后使用查询字符串和$_GET[]
在我寻求解决这个问题,我一直采取一些不同的方法。在自行开发的MVC环境中,我重定向了两次页面。确保数据被提交到数据库后,我把它重定向到
header("Location: http:// .... /redirect/blogcomment
这会打电话给我的“重定向”类和“blogcomment”的方法。在这里,它会再次被重定向到“引用者”。
public function blogcomment() {
$ref = $_SERVER['HTTP_REFERER'];
$page = "Location: " . $ref . "#commentform";
header($page);
}
这将清除POST阵列和通过只是在表单字段的前面添加一个锚定标记,我跳转回该位置。当然,我也可以自定义我的重定向。到目前为止,它的功能就像一个魅力
双重负载...即将页面重定向回自己是不好的做法。尝试调试一个这样做的应用程序,这使得更难以意识到正在发生。对于上帝之人的爱,如果你需要php提交一个表单,先将它发送给一个单独的脚本,然后返回,如果你想再次删除发送表单的刷新,则更容易调试!
尝试做:
unset($_POST);
为最后一个命令。
- 1. 从提交刷新停止窗体
- 2. 防止窗体刷新页面
- 3. 停止刷新页面
- 4. 如何在刷新页面时停止重新提交页面?
- 5. 停止发送没有页面刷新的Ajax请求
- 6. 窗体重置不会在页面auot刷新后发生
- 7. 停止Servlet响应发送参数回页面并强制页面刷新
- 8. 停止页面时,DIV刷新
- 9. 如何停止页面的刷新?
- 10. 启动/停止脚本刷新页面
- 11. 如何停止刷新页面上的事件刷新
- 12. 如何在刷新页面时禁止重新发布 - ASP.NET MVC
- 13. 硒刷新页面和重新发送数据
- 14. 阻止刷新页面发射功能
- 15. 阻止页面刷新
- 16. 防止Javascript页面刷新
- 17. 如何停止刷新客户页面的回发
- 18. jquery - 停止页面重新加载
- 19. 停止页面重新加载
- 20. 刷新页面并打开新窗口
- 21. 当从Dropdownlist中选择国家时停止页面刷新
- 22. 如何从运行停止Page_Load事件,如果刷新页面
- 23. jquery窗体不重新加载页面
- 24. Yodlee停止刷新
- 25. 如何停止的数据重新输入到数据库时,页面刷新
- 26. OAuth 2.0:重新发送刷新令牌
- 27. 防止窗体在页面加载时自动重新提交
- 28. 停止刷新,从重新提交表单
- 29. PHP刷新窗口?相当于F5页面重新加载?
- 30. 在浏览页面时停止母版页刷新?
我认为这是不可能的......但我不确定 – 2011-12-29 21:25:12