2010-04-08 94 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)

恕我直言,它应该打印“entrosopi”,但它does not。为什么?

如果我不是写

如果(!$ password_introducido == $ password_almacenado)

它打印 “entrosopi”。

Javi

+1

要打印的'$ password_almacenado'值的两倍。 ;-) – Gumbo 2010-04-08 18:28:50

回答

4

你意识到你正在输出相同的字符串吗?

试试这个:

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

告诉我们它输出。

他们最有可能不相等。

+1

不,它不是。第一个将'$ password_introducido'转换为布尔值,'NOT',然后将*那个*与'$ password_almacenado'进行比较。 – 2010-04-08 18:28:48

+0

@Samir谢谢你的纠正。 – 2010-04-08 18:44:22

0

其中一个函数(很可能是setPassword)正在加密/哈希值的安全性。