是否有任何'最佳实践'关于如何在登录到您的网站(特别是PHP)后返回用户到他们的原始页面?例如如果我在未登录的情况下查看StackOverflow问题,如果我登录,如何确保我返回到此问题?PHP:登录后返回用户到他们的原始页面
从我的研究看来,围绕$ _SERVER ['HTTP_REFERER']变量提供了很多建议。基本上,你注意到引用者并将其存储在会话中,然后在完成后重定向到该页面。
问题在于HTTP_REFERER充其量是不可靠的。
这是由用户代理设置的。并非所有的用户代理都会设置它,有些提供了将HTTP_REFERER修改为功能的功能。总之,它不能真正被信任。
— [http://php.net/manual/en/reserved.variables.server.php]
的引荐任何编辑重定向到该网站的其他方面将通过常规的权限检查处理。如果引用者被截断,那么简单地将用户重定向到网站的主页面而不是他们来自的页面可能是可以接受的。这似乎是不必要的用户敌对,但我希望有更好的方法来处理这个问题。
所以HTTP_REFERER * *是标准的方式来做到这一点呢?我喜欢使用'lastpage'会话变量作为空白引用者的备份的想法。谢谢! – AgentConundrum 2009-12-31 08:58:28
完全没有问题。但要小心SESSION方法,因为您永远不知道用户是否在他/她的浏览器中打开了您网站的多个选项卡。如果这个答案打勾,允许他人知道=) – mauris 2009-12-31 09:01:00
好点(多个标签)。这看起来似乎最适合多种后备。如果存在隐藏的表单元素,请使用它。如果没有,请检查登录页面上的HTTP_REFERER并使用它。如果它也是空白的,可以使用会话说的最后一页,或者将用户返回到主页面。这可能归结为两个选项中的哪一个提供更好的用户体验的意见。 “主页”可能比推到你在另一个标签中打开一个页面减少混乱,但它是在单页签的“尾页”是可靠的情况下,更糟糕的体验。 – AgentConundrum 2009-12-31 09:08:33