我有条件陈述,因此:
if ($_POST['password'] == $_POST['repeat'] && $_SESSION['type'] == "admin")
但是,假设我也希望条件为使用“超级用户”类型(而不是“admin”)的用户评估true。
所以我可以写一下:
if ($_POST['password'] == $_POST['repeat'] && $_SESSION['type'] == "admin" || $_SESSION['type'] == "superuser")
但是假设PHP从左到右读取条件和方程,那么即使“密码”和“重复”不相等,“超级用户”也可以使条件评估为真,因为我们放置了虚构的“&&”旁边两个操作数的括号,右边?
我可以添加括号来封装“||”的两个操作数,但我回想起我过去曾经尝试过一些东西,并且让它失败了。
有更好的方法吗?括号实际上是否有效(从而得出结论我的记忆有问题?[内存泄漏?嘿。])
谢谢!
答案 0 :(得分:3)
是的,括号将覆盖&&
的优先级高于||
的事实。
答案 1 :(得分:0)
尚未测试但请尝试此操作:
if ($_POST['password'] == $_POST['repeat'] &&
($_SESSION['type'] == "admin" || $_SESSION['type'] == "superuser"))
答案 2 :(得分:0)
将管理员签入()和“类型”检查包含在内。应首先检查超级用户是否有最佳代码。
($_SESSION['type'] == "superuser" || ($_POST['password'] == $_POST['repeat'] && $_SESSION['type'] == "admin") )
答案 3 :(得分:0)
为了得到你想要的东西:
if (($_POST['password'] == $_POST['repeat']) && ($_SESSION['type'] == "admin" || $_SESSION['type'] == "superuser"))
当密码匹配且用户类型为admin或超级用户时,哪个会评估为真。
或者,更详细地说:
$valid_password= $_POST['password'] == $_POST['repeat'];
$valid_user= $_SESSION['type'] == "admin" || $_SESSION['type'] == "superuser";
if ($valid_password && $valid_user)
// Do something