2010-04-08 2 views
0

у меня есть этот код:Сравнение PHP не работает.

$password_introducido = sfContext::getInstance()->getUser()->getGuardUser()->setPassword($value['password_actual']); 

    $password_almacenado = sfContext::getInstance()->getUser()->getGuardUser()->getPassword(); 

    var_dump("kfjsdlkjf"); 
    var_dump($password_almacenado); 
    var_dump($password_almacenado); 

    if($password_introducido == $password_almacenado){ 

     die("entrosopi"); 


    } 

, который печатает это:

строка 'kfjsdlkjf' (длина = 9)

строка 'c9c40d11b29ac0f5bdef3be51ce61187582c3ae1' (длина = 40)

строка 'c9c40d11b29ac0f5bdef3be51ce61187582c3ae1' (длина = 40)

IMHO, он должен печатать «entrosopi», но это не так. Зачем?

Если я вместо этого написать

если (! $ Password_introducido == $ password_almacenado)

печатает "entrosopi".

Javi

+1

Вы печатаете значение '$ password_almacenado' дважды. ;-) – Gumbo

ответ

4

Вы понимаете, что вы выводя ту же строку в порядке?

Попробуйте это:

var_dump("kfjsdlkjf"); 
var_dump($password_introducido); 
var_dump($password_almacenado); 

Расскажите нам, что он выводит.

Они, скорее всего, НЕ равны друг другу.

+1

Нет, это не так. Первый преобразует '$ password_introducido' в логическое,' NOT', а затем сравнивает * это * с '$ password_almacenado'. –

+0

@ Самир Спасибо за исправление. –

0

Одна из функций (скорее всего, наборPassword) - это шифрование/хэширование значения для безопасности.

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