php - 是什么导致重定向循环?

标签 php web-applications redirect infinite-loop

这是我的页面:

重定向页面: 如果用户有一个打开的 session ,重定向到正确的资源 否则重定向到登录页面

登录页面: 如果用户登录信息有效,则重定向到 $_SERVER['HTTP_REFERER'] 否则显示登录页面

当您访问重定向页面时,它发现您没有有效 session 并重定向到登录页面。然后您可以毫无问题地登录,但在身份验证后我收到“此网页有重定向循环”。 Chrome 中的页面。

这不是一个真正的循环,因为有几种出路(IE 提供有效的登录详细信息并转到目标资源,提供无效的登录并接收错误消息等)。但是我可以看到浏览器的困惑(从 a 到 b 再到 a)。

有什么办法可以解决这个问题吗?

干杯

最佳答案

$_SERVER['HTTP_REFERER'] 将始终是登录页面,因为您必须在成功登录之前加载登录页面。因此,一旦您成功登录,referrer 就是登录页面,因此登录页面会将您重定向到您仍然成功登录的登录页面,因此它会让您一遍又一遍地登录。

与其依赖 $_SERVER['HTTP_REFERER'],不如将他们尝试访问的页面存储在 $_SESSION 或 $_COOKIE 变量中。 session 很可能会更好,具体取决于您的设置。

关于php - 是什么导致重定向循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4260028/

相关文章:

iphone - 如何保护来自 iPhone 的 JSON 请求?

redirect - Jetty 将特定请求仅转发到单个路径

java - HTTP 组件核心跟随重定向

php - 使用直接下载链接从数据库导出数据

php - 尝试比较 PDO 语句

javascript - 添加到页面上的主屏幕弹出窗口 - 打开另一个 URL

security - 减少帐户共享

api - Google Cloud Console 中的重定向 URI 未保存

php - 如何计算表格中日期的数量

php - $_POST 将从 utf-8 转换为 à à à 等