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