php - 避免在页面刷新时重新发送数据

标签 php http post-redirect-get

我正在编写简单的登录系统,我想执行“GET” self 重定向以避免在刷新时重新发送数据(POST-Redirect-GET 模式)。据我所知,有几种方法可以做到这一点:

  1. header('Location:main.php');
  2. echo '<body onload="window.location = \''.$HTTP_SERVER_VARS['PHP_SELF'].'\'">body</body>';

  3. echo '<meta http-equiv="refresh" content="0;url='.$HTTP_SERVER_VARS['PHP_SELF'].'">';

有我的问题:

  1. 哪种方法最正确?
  2. 为什么 3. 方法不起作用?。它确实重定向但之后 当我点击“刷新”按钮时,我仍然得到“你想 重新发送数据”消息?

最佳答案

“最正确的”是 1. 因为那是 HTTP,只需确保您返回的是临时重定向代码,否则使用代理的用户最终将无法使用您的系统。其他两个依赖于浏览器实现(从技术上讲 1. 也是如此)并且不能保证工作。

但是,您应该考虑 4. 使用 AJAX 而不必担心上个世纪的问题。

关于php - 避免在页面刷新时重新发送数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29936478/

相关文章:

Angular HttpClient ResponseTyp 错误

http - 这行在 Firebug 中是什么意思?右手边蓝色字

PHP SQL 搜索结果作为 POST/GET 链接

php - 如何在 WooCommerce 中对齐添加到购物车按钮?

php - php中的日期和电话号码格式

Android - AsyncTask 完成后在 MainActivity 中执行某些操作

http - Post-Redirect-Get 后的后退按钮行为

java - 浏览器在页面重新加载时要求重新发送数据

php - header 重定向代码错误

php - 为什么要循环 mysqli_fetch_assoc 中的每个 id?