|
|
1
5
$_SERVER['HTTP_REFERER']将始终是登录页,因为您必须在成功登录之前加载登录页。因此,一旦你成功登录,推荐者就是登录页面,所以登录页面会将你重定向到登录页面,而你仍然成功登录,所以它会一遍又一遍地登录你。 您可能应该将他们试图访问的页面存储在$_会话或$_COOKIE变量中,而不是依赖$_服务器['HTTP_REFERER']。最有可能的会话会更好,这取决于您的设置。 |
|
|
2
2
提交登录详细信息后,
在重定向到登录页面之前,请考虑在PHP会话中存储“重定向到”url。当重定向到登录页面时,也可以将其作为参数传递,但我可以看到这种方法存在潜在的安全缺陷(例如将用户重定向到另一个站点、添加假HTTP头等) |
|
3
1
我的猜测是: 如果用户有一个会话,但不是有效的会话(例如:会话哈希不匹配),则会重定向到登录页(因为他有一个会话)。但是当他到达那里时,你检查他是否有会话,他有会话(但这是无效的),所以你将他重定向到索引资源。在这里,您检查会话是否有效,但它不是。所以你把他重定向到登录页面。等等。。。 怎么解决?在登录页面和其他资源中检查会话有效性(不仅用于存在)。 当然,如果HTTP_REFERER是login,则忽略它并转发到索引资源。 |
|
|
4
1
您应该始终检查$_SERVER['HTTP_REFERER']变量是否包含有效数据,因为它不受信任,因为用户代理提供了此值。
|
|
|
5
0
你可以让你的登录页面一次完成重定向(不需要重定向回“重定向页面”)。 |