Я наткнулся на что-то, что вызывает у меня действительно тяжелое время, и я не могу понять это, поэтому, пожалуйста, посмотрите на мою ситуацию и помогите мне ...
Я пишу код, который Предполагается, что некоторые пользователи сайта не смогут получить доступ к определенной c части сайта, называемой заказами. php
Каждый пользователь имеет ранее назначенную роль, и я пытаюсь добиться этого ограничения, разрешив только несколько ролей для доступа к нему, поэтому, если у вас нет определенных c ролей, которым разрешено посещать назначенный вам сайт, вы будете перенаправлены на домашнюю страницу.
Это одна из из способов, которые я пробовал
if( $userrole !== 'Administrator' OR
$userrole !== 'Manager' OR
$userrole !== 'Product Hunter' OR
$userrole !== 'Product Selector' OR
$userrole !== 'Analytic' OR
$userrole !== 'Order Manager'){
header('Location: ../dashboard.php');
die;
}
else{
//code here
}
Я пытался использовать ||
вместо OR
, но это не работает либо
Я также пытался использовать оператор elseif
для каждого роль, подобная этой:
if( $userrole !== 'Administrator'){
header('Location: ../dashboard.php');
die;
}
elseif( $userrole !== 'Manager'){
header('Location: ../dashboard.php');
die;
}
elseif( $userrole !== 'Product Hunter'){
header('Location: ../dashboard.php');
die;
}
elseif( $userrole !== 'Product Selector'){
header('Location: ../dashboard.php');
die;
}
elseif( $userrole !== 'Analytic'){
header('Location: ../dashboard.php');
die;
}
elseif( $userrole !== 'Order Manager'){
header('Location: ../dashboard.php');
die;
}
else{
//code goes here
}
Насколько я понимаю, код должен продолжать выполнять оператор else в тот момент, когда он читает имя вашей роли, например, если вы являетесь администратором, он будет Я выполню оператор else, потому что сказано, что если вы не являетесь некоторыми из указанных ролей, то вы будете перенаправлены, а поскольку вы одна из указанных ролей, то код должен выполнить для вас, но по какой-то странной причине он перенаправляет вас на домашнюю страницу независимо от того, являетесь ли вы администратором, менеджером или посетителем ...
Единственный способ, которым код позволяет вам посещать веб-сайт вместо того, чтобы перенаправлять вас на домашнюю страницу, когда у вас указана только одна роль, например:
if( $userrole !== 'Administrator'){
header('Location: ../dashboard.php');
die;
}else{
//code goes here
}
Таким образом, если вы являетесь администратором, вам разрешено посещать страницу, и если у вас есть другая роль тогда вы будете перенаправлены.
Причина, по которой я использую !==
, заключается в том, что я хочу, чтобы код определял, может ли этот пользователь посещать эту часть веб-сайта в начале, вместо того, чтобы указывать ему показывать код пользователям. с этими несколькими c ролями и перенаправлением всех остальных.
$userrole
ранее было установлено равным переменной $_SESSION
, которая ch содержит значение фактической роли пользователя и определяется при входе в систему; если я его повторю, он печатает имя роли, чтобы точно не вызывать проблему.
Я нашел некоторые посты, предлагающие использовать операторы switch, но я еще не пробовал их, так как я предпочитаю делать это таким образом, если это возможно.
Заранее спасибо!