перенаправить пользователя с ролью пользователя сеанса в соответствующую панель - PullRequest
0 голосов
/ 24 августа 2018

Я сохранил массив в сеансе, и я хочу перенаправить пользователя к администратору, если роль пользователя - администратор, а также другие. Но я не могу это сделать ?? Я не знаю, где проблема. Сессия не выполняется должным образом. Может кто-нибудь, пожалуйста, помогите мне ??

$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 голосов
/ 24 августа 2018

попробуйте добавить (временно) эту строку перед предложением IF:

print_r($_SESSION);

Это выведет массив сеанса, чтобы вы могли определить точное местоположение переменной user_role в нем.

Похоже, что $ _SESSION ['userdata'] содержит массив.

Лучше всего, чтобы роль пользователя содержалась в

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

но вместо метода проб и ошибок print_r должен дать вам определенный ответ

0 голосов
/ 24 августа 2018

Кажется, в вашем массиве есть ошибка при наборе. Вы не можете присвоить значение, используя переменные 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, используя

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

Надеюсь, это поможет.

0 голосов
/ 24 августа 2018

Значение $_SESSION['userdata'] представляет собой массив TRUE s (присваивания в PHP приводят к значению TRUE. В PHP массивы представляют собой пары имя-значение, а именем должно быть строка, за которой следует =>, а затем значение. Например:

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

Тогда вы можете использовать значения, как предложено @Sehdev.

Если вы не уверены, правильно ли переменные / массивы были заполнены необходимыми значениями, вы можете сделать var_dump($session_user);

0 голосов
/ 24 августа 2018
$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'] также должен вернуть вашу роль.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...