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

标签 php javascript authentication

因此,出于某种原因,我尝试了 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>';
    }
}

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

最佳答案

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

与 JavaScript 相比,此方法的另一个好处是重定向是在页面请求的 header 中发送的,无需发送用户 js。

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

// 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");

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

登录成功后获取

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

关于php登录后导航到上一页解决方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16407710/

相关文章:

javascript - 是否有 lodash 函数或 'lodash way' 来执行条件 _.map?

php - Controller 路由在 silverstripe 3.1 中无法正常工作

javascript - 将脚本标签值传递给html中的输入标签

javascript - 在提交表单之前验证多个文件的文件名

javascript - 同时更改一个图像标题和一个文本标题

PHP检查字符串是否包含字母

java - Spring Security @PreAuthorize-ProviderNotFoundException

session - 是否可以将 HTTP header 添加到 Socket.io 握手中?

php - 通过 JSON 将 HTML 从 PHP 发送到 javascript

javascript - 更改 Ajax Post 参数并根据交替依赖的下拉列表返回 HTML