2016-10-09 11 views
2

なぜ私のコールバックコードでif条件にfalseを返すのですか?私はここにすべてのそれらの値のそれぞれとコールバック関数がfalseを返すCodeIgniter

をのvar_dumpしようとした二つの値がここif($old_password_hash != $old_password_db_hash) {

に満足するdoesntののvar_dumpの出力

var_dump($old_password_hash); = string(32) "25d55ad283aa400af464c76d713c07ad" 
var_dump($old_password_db_hash); = object(stdClass)#24 (1) { ["user_password"]=> string(32) "25d55ad283aa400af464c76d713c07ad" } 

は私の完全なコードは

​​
+1

私はあなたがhttp://php.net/manual/en/function.password-hashをハッシュパスワードについては、このセキュリティ – Brad

+0

使用する必要があります何のためにMD5を使用していない願っています。 phpとこれはパスワードの確認のためhttp://php.net/manual/en/function.password-verify.phpあなたのmd5は安全ではありませんパスワードは今推奨されていません – user4419336

答えて

3
です

$old_password_hashは、文字列

です。

$old_password_db_hashは、彼らが等しくなることはありませんますオブジェクト

です。 neverobjectと等しい。

だから、$old_password_hash != $old_password_db_hashは常に真のです。したがって、FALSEが返されます。

適切なチェックがある:

// take `user_password` property of an object 
if ($old_password_hash != $old_password_db_hash->user_password) { 
    $this->form_validation->set_message('oldpassword_check', 'Old password not match'); 
    return FALSE; 
} 
else { 
    return TRUE; 
} 
+0

ありがとうございました....ありがとうございます。非常に素晴らしい答えです。 –

+0

私はあなたに説明することができます。どのようにオブジェクトを文字列にしましたか? –

+1

私はしませんでした。代わりに私はオブジェクトの__property__を取る。また、プロパティ( 'user_password')も型文字列を持ちます。 –

関連する問題