登录后将用户重定向到上一页
我阅读了很多关于它的文章,但我无法找到如何解决我的问题。当我的脚本未设置会话时,只需要重定向他登录时,他可以轻松地登录并返回到他已注销的页面。登录后将用户重定向到上一页
public static function expired()
{
if (isset($_SESSION['logged_id']))
{
if (time() - $_SESSION['time'] > 3600)
{
header('Location: http://nostools.cz/scripts/logout.php');
$_SESSION['last_visited'] = $_SERVER['REQUEST_URI'];
} else {
$_SESSION['time'] = time();
return true;
}
}
}
public function logout()
{
$onlinedestroy = Query::getInstance()->delete('online', array('user_id', '=', $_SESSION['logged_id']));
unset($_SESSION['logged_id']);
$this->redirect("http://nostools.cz/content/login/");
}
此脚本在每一页上。在$ _SESSION ['last_visited']是logout.php,我需要得到前一页,我也尝试使用$ _SERVER ['HTTP_REFERER']。 有人可以告诉我如何获得上一页?
你可以在一个会话里面存储url,$ _SESSION ['visited_page']里面的头部。每次用户访问不同的网址时,该会话值都会更新。在注销期间,您可以将$ _SESSION ['visited_page']内的url分配给$ _SESSION ['last_visited']并取消设置$ _SESSION ['visited_page']。现在你有最后一次访问的url用户。我希望你明白我的观点。
当您在注销功能中重定向时,您可以检查last_visited
变量。将它添加到您要重定向到像现在这样的网址:
$this->redirect("http://nostools.cz/content/login?last_visited=" . $last_visited);
然后当你登录你是否$_GET['last_visited']
设置,如果是,那么你从你的登录重定向到该页面
有问题$ last_visited设置为.../logout.php但不是URL我想 –
您应该首先使用$ _SERVER ['HTTP_REFERER'];在变量中获取用户引用页面;在你的登录页面。
LIKE:
<?php
session_start();
$refPage = $_SERVER['HTTP_REFERER'];
?>
而现在,当用户点击登录,然后更改标题的位置,以用户参考页
LIKE:
<?php
if(isset($_POST[login])){
session_start();
header('location:' . $refPage);
}
?>
而在这个时候,你应该首先检查该用户引用页面为空或不是因为您的用户可以直接访问您的登录页面,那么您的$ refPage变量将为空,因此点击后登录页面会保留在这里
LIKE:
<?php
if(isset($_POST[login])){
session_start();
$refPage = $_SERVER['HTTP_REFERER']; // get reffer page url
if(empty($refPage)){
header('location: yourredirectpage'); // if ref page is empty then set default redirect page.
}else{
header('location:' . $refPage); // or if ref page in not empty then redirect page to reffer page
}
}
?>
或者你可以使用输入类型隐藏在这里你可以设定值$ _ SERVER [ 'HTTP_REFERER'];
LIKE:
“> 而当用户点击登录,那么你可以得到refPage值和重定向之前的页面,你也应该检查空参考页面,因为您的用户可以访问直接登录。页面。
谢谢。
非常有用的,谢谢! –