2013-02-18 48 views
-1

我有以下代码。如果我分别运行每个条件它工作正常,但我很快添加'XOR'或'或'或'||'运营商似乎不匹配。php xor操作符不按预期方式工作

我知道它会是一个简单的问题,但我不能发现它。我使用这个操作符是否错误?

if ($usercurrentpassword['password'] != $currentpasswordmd5 xor $usercurrentpassword['password'] != $currentpasswordsha1){ 
        $a = "Current passwords do not match"; 
        return $a; 
       } 
+0

您可能正在遇到主席问题。你的if语句中没有括号,所以我不能猜测你的预期执行顺序是什么。 – GordonM 2013-02-18 14:07:14

+0

已经试过它与下面的评论,但相同的支架。如果我更改语句只检查一个变量它工作正常,但不是或者。 – user112570 2013-02-18 14:10:05

+0

此外,该算法似乎是错误的 - 如果密码没有得到相同的MD5或相同的SHA1,它不会回应任何东西。也许问题在于你如何“编码”你的想法?该算法意味着什么? – 2013-02-18 14:12:07

回答

0

也许你应该使用括号:

if (($usercurrentpassword['password'] != $currentpasswordmd5) xor ($usercurrentpassword['password'] != $currentpasswordsha1)) { 
0

就我而言,在PHP的XOR(异或)运算符(任何其它语言)是插入符^。试试看。