1

我的页面上有几个链接。如果用户未登录,他们中的大多数将重定向到主页。我不想这样做,而是将用户定向到登录页面,然后将他们定向到他们最初想去的页面。

因此,例如,如果用户在 上index.php,并且在page10.php未登录的情况下点击。她/他应该被定向到login.php。登录后,网站应记住用户最初想访问page10.php.

我该如何做那个记忆部分?我知道我可以使用 cookie 和/或 php 会话,但这些是记住用户想要去的最合适的方式(在这种情况下)page10.php吗?

4

4 回答 4

2

附加所需的 URL 作为链接的一部分。因此,如果用户未登录,请重定向他:

login.php?url=<desired_url>

读取登录页面上的变量,并在成功后将其定向到那里而不是索引。

要获取服务器端的 URL,请查看$_SERVER['REQUEST_URI']

$_SERVER 手册

于 2013-01-24T09:35:49.920 回答
2

无需使用会话或获取变量,只需从登录页面上的 $_SERVER 数组访问 HTTP_REFERER,将其设置为表单中的隐藏元素,然后在提交后重定向回该 URI

于 2013-01-24T10:14:48.543 回答
0

首先,重定向到login.php?return=ORIGINAL_URL

在 login.php 中设置$_SESSION['return'] = $_GET['return'];

成功登录后,检查是否有$_SESSION['return'],如果有,并且是有效的 URL,重定向到它并取消设置$_SESSION['return']

就是这样。

PS: 之所以应该使用 session 是因为用户第一次尝试可能无法成功登录。或者可能没有帐户,他可能要先注册。这样,即使在创建帐户后,他也会被重定向到相应的页面。

于 2013-01-24T09:37:15.763 回答
0

登录用户意味着您将使用会话。会话通常使用 cookie,但如果您不想或不能使用 cookie,则可以通过在请求中传递会话 id 来实现它们。

执行此操作的适当方法是使用会话,如下所示:

1) 身份验证检查重定向到登录页面

2)登录页面检查是否在会话中设置了目标页面,如果没有,则将其设置为引荐来源网址

3) 如果登录表单有效,则从会话中删除目标页面,并将用户重定向到原始页面

4) 否则表格会重新显示。

于 2013-01-24T09:48:41.373 回答