2010-04-08 153 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)正在加密/哈希值的安全性。