假设用户已将“ http://www.example.com/login#/settings ”添加为书签。如果该用户在注销时尝试访问此页面,首先我希望他重定向到登录页面,然后使用此方法转到带书签的页面
http://www.example.com/authenticate/login?continue=http://www.example.com/login#/settings
注意:
当用户输入http://www.example.com/login#/settings时,我想在我的控制器文件中读取包含#anchor 的整个网址,然后我只能设置网址< / strong>到
http://www.example.com/authenticate/login?continue=http://www.example.com/login#/settings
所以我该怎么办?
答案 0 :(得分:0)
取决于您希望如何向用户展示。对于简单的重定向,请使用header
发送HTTP位置标头
header("Location: http://www.google.com/");
如果您想在重定向之前给用户一些时间来阅读短信,那么您可以使用header
发送HTTP刷新标头
header( "Refresh: 5; url=newpage.php" );
编辑:要捕获锚点,您需要使用JavaScript。 PHP无法获取该信息。在这种情况下,如果您使用JavaScript捕获锚点,那么您也可以在JavaScript中编写重定向。
编辑2:也许另一个选项是,当您将继续传递给您的程序时,还将锚点作为另一个GET
变量发送。所以您的URI可能如下所示:
http://www.example.com/authenticate/login?continue=http://www.example.com/login&anchor=settings#/settings
然后使用$_GET['anchor']
并使用$_GET['continue']
将其连接到#
的值。
$uri = $_GET['continue'] . "#" . $_GET['anchor'];
答案 1 :(得分:0)
PHP中的cannot read the part after the #。你需要使用JavaScript。例如,您可以使用
window.location.hash
找到散列部分(如果有的话)(如果没有散列,则为'',如果有散列,则为'#something')。然后,您可以将其作为请求中的隐藏字段发送给控制器。