如何在php中将用户从登录页面重定向到另一个页面

时间:2012-08-01 04:53:18

标签: php url redirect

假设用户已将“ http://www.example.com/login#/settings ”添加为书签。如果该用户在注销时尝试访问此页面,首先我希望他重定向到登录页面,然后使用此方法转到带书签的页面

  

http://www.example.com/authenticate/login?continue=http://www.example.com/login#/settings

注意:

  • 我正在使用MVC架构
  • 是否有任何方法而不是 HTTP_REFERER

当用户输入http://www.example.com/login#/settings时,我想在我的控制器文件中读取包含#anchor 的整个网址,然后我只能设置网址< / strong>到

http://www.example.com/authenticate/login?continue=http://www.example.com/login#/settings

所以我该怎么办?

2 个答案:

答案 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')。然后,您可以将其作为请求中的隐藏字段发送给控制器。