PHP比较不起作用..为什么?

时间:2010-04-08 18:21:50

标签: php comparison

我有这段代码:

    $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");


    }

打印出来:

  

string'kfjsdlkjf'(length = 9)

     

的字符串   'c9c​​40d11b29ac0f5bdef3be51ce61187582c3ae1'   (长度= 40)

     

的字符串   'c9c​​40d11b29ac0f5bdef3be51ce61187582c3ae1'   (长度= 40)

恕我直言,它应该打印“entrosopi”,但它没有。为什么呢?

如果我改为写

  

if(!$ password_introducido ==   $ password_almacenado)

打印“entrosopi”。

哈维

3 个答案:

答案 0 :(得分:4)

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

试试这个:

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

告诉我们它的输出结果。

他们很可能彼此不相等。

答案 1 :(得分:0)

其中一个功能(很可能是setPassword)是加密/散列安全值。

答案 2 :(得分:0)

使用===进行精确的文字比较。

有关详细信息,请参阅此相关问题:if(0 == '%') echo "WTF, Php, why can't you compare things sanely?"