【问题标题】:redirect user with session user role in their respective dashboard在各自的仪表板中使用会话用户角色重定向用户
【发布时间】:2019-01-30 23:06:57
【问题描述】:

我已将数组保留在会话中,如果用户角色是 admin 和其他角色,我想将用户重定向到 admin。但我不能这样做??我不知道问题出在哪里。会话没有正常进行。谁能帮帮我??

$session_user = array($user_id = $row['user_id'],
$fullname = $row['fullname'],
$username = $row['username'],
$phone_number = $row['phone_number'],
$state = $row['state'],
$city = $row['city'],
$street = $row['street'],
$email = $row['email'],
$user_role = $row['user_role']);

$_SESSION['userdata'] = $session_user;
/*header('Location:hello.php');*/
if($_SESSION['userdata']== 'admin'){
    /*header('Location:admin/admindashboard.php');*/
    header('Location:hello.php');
}else{
    /*header('Location:contributor/contributordashboard.php');*/
        /*header('Location:hello.php');*/
    echo "Error in identifying the user role";
}

【问题讨论】:

    标签: php mysql arrays session


    【解决方案1】:

    您的数组中似乎有输入错误。您不能使用 php 变量和等号运算符来赋值。您需要使用箭头运算符。假设以下数组

    $session_user = array('user_id' => $row['user_id'],
    'fullname' => $row['fullname'],
    'username' => $row['username'],
    'phone_number' => $row['phone_number'],
    'state' => $row['state'],
    'city' => $row['city'],
    'street' => $row['street'],
    'email' => $row['email'],
    'user_role' => $row['user_role']);
    

    改变

    $_SESSION['userdata']
    

    $_SESSION['userdata']['user_role']
    

    获取 user_role,因为您在会话中存储数组。如下:

    if($_SESSION['userdata']['user_role']== 'admin'){
        /*header('Location:admin/admindashboard.php');*/
        header('Location:hello.php');
    }else{
        /*header('Location:contributor/contributordashboard.php');*/
            /*header('Location:hello.php');*/
        echo "Error in identifying the user role";
    }
    

    P.S:您可以使用检查您的 user_role 索引

    echo "<pre>"
    print_r($_SESSION['userdata']);
    echo "</pre>"
    

    希望这会有所帮助。

    【讨论】:

    • 表示user_role 列是未识别索引。 @Sehdev
    • @SmileKisan 添加此 print_r($_SESSION) 并检查用户角色的索引,然后使用它。
    【解决方案2】:

    尝试在 IF 子句之前(临时)添加这一行:

    print_r($_SESSION);
    

    这将输出会话数组,以便您确定 user_role 变量在其中的确切位置。

    看起来 $_SESSION['userdata'] 包含一个数组。

    最好的办法是用户角色将包含在

    $_SESSION['userdata']['user_role']
    

    但 print_r 应该给你明确的答案,而不是反复试验

    【讨论】:

      【解决方案3】:

      $_SESSION['userdata'] 的值是 TRUEs 的数组(在 PHP 中赋值的结果是 TRUE。在 PHP 中数组是名称到值对,名称应该是一个字符串,后跟 =&gt;,然后值。例如:

      $session_user = array('user_id' => $row['user_id'],
      ...
      

      然后您可以使用@Sehdev 建议的值。

      当你不确定变量/数组是否正确填写了你需要的值时,你可以var_dump($session_user);

      【讨论】:

        【解决方案4】:
        $session_user = [
            'user_id'      => $row['user_id'],
            'fullname'     => $row['fullname'],
            'username'     => $row['username'],
            'phone_number' => $row['phone_number'],
            'state'        => $row['state'],
            'city'         => $row['city'],
            'street'       => $row['street'],
            'email'        => $row['email'],
            'user_role'    => $row['user_role']
        ];
        

        这应该会给你正确的索引。

        $session_user-&gt;user_role给你你的角色

        $_SESSION['usersata']['user_role']也应该返回你的角色。

        【讨论】:

        • 我已经这样做了,但它在上面提到的 if 条件下显示了未识别的索引“user_role”........我想把这一切都保留在会话中,这样它就可以随处使用@Artas
        • 使用$session_user['user_role']代替$session_user-&gt;user_role读取值
        猜你喜欢
        • 1970-01-01
        • 2018-12-21
        • 2023-04-10
        • 1970-01-01
        • 2019-11-20
        • 2017-12-15
        • 2016-06-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多