PHP Karşılaştırılması .. neden çalışmıyor?

3 Cevap php

ben bu kodu vardır:

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


    }

bu yazdırır:

dizge 'kfjsdlkjf' (uzunluk = 9)

string 'c9c40d11b29ac0f5bdef3be51ce61187582c3ae1' (length=40)

string 'c9c40d11b29ac0f5bdef3be51ce61187582c3ae1' (length=40)

IMHO, "entrosopi" yazdırmak gerekir, ama öyle değil. Neden?

I yerine yazarsak

if(!$password_introducido == $password_almacenado)

o "entrosopi" yazdırır.

Javi

3 Cevap

Eğer doğru aynı dizesini çıkış vardır farkında?

Bu deneyin:

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

Bu çıkışlar söyle bize.

Birbirlerine eşit olasılıkla DEĞİLDİR.

Fonksiyonları (büyük olasılıkla SetPassword) bir güvenlik değerini karma / şifreleyerek.

Kesin, değişmez karşılaştırma için === kullanın.

http://stackoverflow.com/questions/2322789/if0-echo-wtf-php: Ayrıntılar için, bu ilgili soruya bakın