2011-08-28 64 views
0

我有一個小問題。我希望創建一個IF語句,這應是這樣的反應:如果用戶不是管理員(forum_admin)幫助PHP IF語句 - 或與等

  • ,他們是不要門票的(用戶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

是的,管理員應該允許不管是什麼。 –

+1

我覺得你讓它太複雜了。採取允許用戶逐一查看票證的條件,通過OR連接它們並最終'!()'這個。 (當然,你也應該'()'包含幾個子條件以避免操作符優先級問題。) – Nobody

回答

3
if (isAdmin || (allowModerators && isModerator) || userID == ticketUser) allowToSeeTicket 

if (! (isAdmin || (allowModerators && isModerator) || userID == ticketUser)) notAllowToSeeTicket 
+0

謝謝!這工作。 –

0

不能混用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"); 
}