【问题标题】:Cannot Redirect to the correct page using PHP session无法使用 PHP 会话重定向到正确的页面
【发布时间】:2021-11-08 16:02:19
【问题描述】:

在我的应用程序中,我有 4 个角色。根据角色,用户可以查看他们访问的不同页面。目前我正在维护 2 个不同的会话。 $_SESSION['user_id']$_SESSION['role_id']

我的问题是,假设我们说role_id =1Adminrole_id=2Doctor。如果我以Admin 的身份退出此会话并以Doctor 的身份登录该站点。然后我点击web browser 中的返回按钮,它将重定向到Admin page。我不想redirectAdmin page,只想留在同一页面。

在这里,我使用此代码进行重定向,但没有工作。

 //  redirect to main page according to the user role 
     if(isset($_SESSION['user_id']) && $_SESSION['role_id'] == 1){//admin
        header("location: index-2.php");
        exit;
     }

     if(isset($_SESSION['user_id']) && $_SESSION['role_id'] == 2){ // doctor
        header("location: index.php");
        exit;
     }
     
     if(isset($_SESSION['user_id']) && $_SESSION['role_id'] == 3){// lab
        header("location: index-lab.php");
        exit;
     }

     if(isset($_SESSION['user_id']) && $_SESSION['role_id'] == 4){// recep
        header("location: index-recep.php");
        exit;
     }

我不知道我哪里出错了。有人可以帮助我。任何帮助都将受到高度赞赏。

【问题讨论】:

  • "然后我点击浏览器中的返回按钮,它会重定向到管理页面"当你点击返回时缓存被加载,这不是一个 php 问题,那是浏览器的工作原理
  • @Cid $_SESSION['user_id'] 仍然存在。这就是为什么。
  • @Cid $_SESSION['user_id'] 对于每个页面都是相同的,$_SESSION['role_id'] 对于角色是不同的

标签: php session


【解决方案1】:

正如Cid 提到的,当您单击后退按钮时会加载缓存。这不是我真正尝试过的,但您可以尝试为您的应用程序设置缓存设置以防止页面被缓存。见How do we control web page caching, across all browsers?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-12
    • 2014-09-29
    • 1970-01-01
    • 1970-01-01
    • 2013-03-26
    • 2012-05-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多