0

假设用户为“ 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时,我想读取整个 url,包括我的控制器文件中的 #anchor,然后只有我可以将 url 设置

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

那我该怎么做??

4

2 回答 2

0

无法从 PHP 中读取 # 之后的部分。为此,您需要使用 JavaScript。例如,您可以使用

window.location.hash

找到散列部分,如果有的话(如果没有散列,它将是 '',如果有散列,它将是 '#something')。然后,您可以将其作为请求中的隐藏字段发送到控制器。

于 2012-08-01T05:21:27.547 回答
0

取决于您希望如何将其呈现给您的用户。对于简单的重定向,使用header发送 HTTP Location Header

header("Location: http://www.google.com/");

如果您想在重定向用户之前给用户一些时间阅读短消息,那么您可以使用header发送 HTTP Refresh Header

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']with a的值#

$uri = $_GET['continue'] . "#" . $_GET['anchor'];
于 2012-08-01T05:08:16.033 回答