у меня есть этот код:
$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)
строка 'kfjsdlkjf' (длина = 9)
строка 'C9c40d11b29ac0f5bdef3be51ce61187582c3ae1' (Длина = 40)
ИМХО, он должен печатать "энтросопи", но это не так. Почему?
Если я вместо этого напишу
if (! $ Password_introducido == $ Password_almacenado)
печатает "энтросопи".
1024 * Javi *
Вы понимаете, что выводите одну и ту же строку, верно?
Попробуйте это:
var_dump("kfjsdlkjf"); var_dump($password_introducido); var_dump($password_almacenado);
Скажите нам, что он выводит.
Скорее всего, они НЕ равны друг другу.
Используйте === для точного, буквального сравнения.
===
Подробнее см. В этом связанном вопросе: if (0 == '%') echo "WTF, Php, почему вы не можете разумно сравнить вещи?"
Одной из функций (скорее всего setPassword) является шифрование / хеширование значения для безопасности.