在我的一个网站中,我使用以下if语句:
if (isAdmin() || (isSupporter() && hasRight("XXX")) {
echo "<a href='/page'>Menu</a>";
}
此语句用于确定用户是否可以在主导航中看到链接。如果用户是具有给定权限的管理员或支持者,那就如此。
我现在正尝试否定此语句,以防止用户访问链接指向的页面。这意味着我正在尝试查找一条if语句,如果用户既不是管理员也不是具有给定权限的支持者,则该语句将返回false。到目前为止,我使用以下语句:
if (!isAdmin() || !isSupporter() || !hasRight("XXX")) {
die();
}
此语句的问题在于,只有管理员,支持者和具有特定权限的用户才能访问该页面。 所以我的问题是,是否有一种方法可以否定第一条语句,以便管理员或支持者有权访问该页面?谢谢
答案 0 :(得分:2)
首先,&&
的优先级高于||
(例如*
和+
)。因此,您可以删除1个括号对:
if ( isAdmin() || isSupporter() && hasRight("XXX") )
一个简单的否定就是添加括号并取反整个表达式。
if ( !( isAdmin() || isSupporter() && hasRight("XXX") ))
取反逻辑表达式意味着取反所有元素,并交换&&
和||
。出于优先考虑,您必须添加括号(如此处),也可以将其删除。
if ( !isAdmin() && ( !isSupporter() || !hasRight("XXX") )