如何将用户转移到登出前的最后一个页面



我有一个网站,使用会话允许用户安全访问我的网站。我也有一个空闲的超时会话(如果使用空闲20分钟,他们会得到一个弹出消息,看看他们是否还在网站上,如果不是,它会破坏他们的会话,并引导他们到登录页面。我想做的是让他们回到退出之前的状态。

例如,假设我在一个名为articles.php?Id =100阅读长篇文章。然后,系统将我注销,因为我已经空闲了一段时间。现在,我用我的用户名和密码登录。登录后,我希望系统引导我回到article.php?Id =100而不是index.php。目前,在每次登录请求中,系统都会发送对index.php的使用。

第二种情况:我将带有列表的电子邮件发送给另一个用户(即。Article.php ?id=100),但是这个用户没有登录,所以系统会自动将他们引导到登录页面。本例中,我还需要将它们放到article。php?

Id =100

问题:我如何通过Header('Location: index.php')找出在传输之前请求的url,以便我可以将用户转移回该url。如果引用的站点是相同的URL,则必须重定向。

您可以在重定向Header('Location: index.php')之前编写以下代码,并提供登录页面的当前url:

$currentUrl = $_SERVER['REQUEST_URI']. '?' .$_SERVER['QUERY_STRING']; header('Location: index.php?redirectTo=' . urlencode($currentUrl));

然后在登录表单中包含redirectTo参数作为隐藏输入字段:

<input type="hidden" name="redirectTo" value="<?php echo $_GET['redirectTo']"?>" />

然后你可以在登录后使用它来重定向到相关页面:

//after login code header('Location: '. $_REQUEST['redirectTo']); exit();//for good measure

根据您使用的框架调整此代码,我假设这里是普通php ....

有很多方法可以解决这个问题,但是在每次页面更改时,您可以将用户当前访问的uri存储在一个简单的key:value数据存储中,例如SQLite, memcached,甚至作为cookie。注销后,您检查该密钥并将用户重定向到该站点。

相关内容

最新更新