在各自的仪表板中使用会话用户角色重定向用户

时间:2018-08-24 12:52:45

标签: php mysql arrays session

我将数组保留在会话中,并且如果用户角色是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";
}

4 个答案:

答案 0 :(得分:1)

尝试(暂时)在IF子句之前添加此行:

print_r($_SESSION);

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

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

最好的选择是用户角色将包含在

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

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

答案 1 :(得分:0)

$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->user_role给您您的角色

$_SESSION['usersata']['user_role']还应该返回您的角色。

答案 2 :(得分:0)

似乎您的数组中有输入错误。您不能使用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>"

希望这会有所帮助。

答案 3 :(得分:0)

$_SESSION['userdata']的值是TRUE的数组(PHP中的赋值结果为TRUE。在PHP数组中,是“名称到值”对,名称应为字符串,后跟{ {1}},然后是值。例如:

=>

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

如果不确定变量/数组是否已正确填写所需的值,可以执行$session_user = array('user_id' => $row['user_id'], ...