2013-02-18 4 views
-1

У меня есть следующий код. Если я выполняю каждое условие отдельно, он отлично работает, но вскоре, когда я добавляю «xor» или «or» или «||», операторы, похоже, не совпадают.Оператор php xor не работает как ожидалось

Я знаю, что это будет что-то простое, пропущенное, но не может его обнаружить. Я использую этот оператор неправильно?

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

Возможно, вы столкнулись с порядком вопросов, связанных с вопросом. В вашем операторе if нет брекетинга, поэтому я не могу догадаться, каков ваш намеченный порядок выполнения. – GordonM

+0

уже пробовал его с помощью скобки, как комментарий ниже, но тот же. Если я изменю инструкцию, чтобы проверять только одну переменную, она работает нормально, но не является ни одним, ни. – user112570

+0

Кроме того, алгоритм кажется неправильным - если пароль не имеет того же MD5 или того же SHA1, он не будет эхом ничего. Может быть, проблема в том, как вы «кодируете» свою мысль? Что должен делать алгоритм? –

ответ

0

Может быть, вы должны использовать скобки:

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

Насколько я понимаю, то XOR (исключающая дизъюнкция) оператор в PHP (любые много других языков) является кареткой: ^. Попробуй это.

Смежные вопросы