登录解决方法后,php导航到上一页

时间:2013-05-06 21:37:36

标签: php javascript login

因此,出于某种原因,我尝试了http_referer并且它对我不起作用......或者可能是这样,但这就是我尝试解决方法的原因。我正在浏览器中测试登录脚本,我希望用户返回他们访问的上一页。

我遇到的问题是当我输入我的登录凭据时,Firefox和Chrome弹出一个“保存密码”选项,我认为它就像一个页面。所以当调用http_referer或

echo '<script type="text/javascript">javascript:history.go(-1);</script>';

该页面仍在登录页面上!那么,如果用户点击一次“不保存”并保存该选项...然后使用history.go(-2)将无效。这是我尝试过的解决方法,但我无法让它工作。

最初,如果登录信息正确,我会调用第一个history.go(-1)。然后我使用此函数获取当前页面,如果它与login.php匹配,我想再返回一页!但它不起作用。请告诉我

if($login_check > 0){
    echo '<script type="text/javascript">javascript:history.go(-1);</script>';
    function curPageName() {
        return substr($_SERVER["SCRIPT_NAME"],strrpos($_SERVER["SCRIPT_NAME"],"/")+1);
    }
    $curpage = curPageName();
    if ($curpage = "login.php"){
        echo '<script type="text/javascript">javascript:history.go(-1);</script>';
    }
}

我也读过使用会话,但我的会话数组保存了购物车的数据,因此我不确定如何使用会话进行导航。

1 个答案:

答案 0 :(得分:3)

为什么不在会话中存储重定向到登录页面的页面的URL,然后在成功登录时重定向到该页面?这样,即使用户登录尝试失败,他们仍然会到达正确的页面。

此方法相对于javascript的另一个好处是重定向在页面请求的头部中发送,无需发送用户js。

当用户未登录时,将URL保存为会话变量。

// not logged in
$_SESSION['redirect_url'] = 'http://'.$_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
//now redirect to login page, something like
header("Location: http://www.site.com/login");

铌。上面的URL是粗略构造的,如果您使用SSL或其他端口(而不是80),则需要相应地更改它。

成功登录后检索

//login successful 
header("Location: ".$_SESSION['redirect_url']);
exit;