У меня небольшая проблема. Я хочу создать оператор IF, который будет реагировать следующим образом:

  • Если пользователь НЕ является администратором (forum_admin) И он не является владельцем билета (ID пользователя), НО модераторам разрешено просматривать тикеты (allow_moderator_tickets) И пользователь является модератором (forum_moderator), тогда ему должно быть разрешено просматривать тикет.

Как я могу получить это с помощью оператора PHP if.

Пока у меня есть это:

 //If user is not allowed to view.  
    if($userdata['forum_admin']==0 && $ticketDetails['userid']!=$userdata['id'] || $sdata['allow_moderator_ticket']==0 && $userdata['forum_moderator']==1)
        redirect("?i=a");
0
Oliver 'Oli' Jensen 28 Авг 2011 в 19:20

2 ответа

Лучший ответ
 if ( isAdmin || (allowModerators && isModerator) || userID == ticketUser ) allowToSeeTicket

 if ( ! (isAdmin || (allowModerators && isModerator) || userID == ticketUser) ) notAllowToSeeTicket
3
George Kastrinis 28 Авг 2011 в 15:28

Нельзя смешивать операторы and и or. друг друга испортят. вы должны группировать свои выражения, используя круглые скобки, как в арифметике

Было бы неплохо реорганизовать ваш код, чтобы сделать его читабельным

$admin = ($userdata['forum_admin']);
$owner = ($ticketDetails['userid'] == $userdata['id']);
$moder = ($sdata['allow_moderator_ticket'] == 1 AND $userdata['forum_moderator']==1)

if !($admin OR $moder OR $owner) {
    redirect("?i=a");
}
0
Your Common Sense 28 Авг 2011 в 15:33