2017-10-31 10 views
-1

がここに私のコードです: ==演算子は、文字列が同じであっても、真与えていません

$param = $old_password.$salt; 
$hashed_password = $this->general->hash($param); 
//echo $hashed_password;echo " "; echo $userdata->password;exit; 
if($hashed_password == $userdata->password){ 
    print_r("com");exit; 
} 
print_r("didn't match");exit; 

私は上記のように結果をエコー

がまったく同じである

8fb9ccf75da3c0eb285d3dddd80895a8f15f64d5 8fb9ccf75da3c0eb285d3dddd80895a8f15f64d5 

です。しかし、if文には入りません。

+0

を試してみてくださいをあなたはmethed)(等号で試してみましたか? –

+0

比較の前に文字列をトリムします。 –

+0

文字列の比較に間違った方法を使用しています。 'strcmp()'関数を使って文字列を比較する必要があります。私の答えをチェックしてください。 –

答えて

0

両方の変数にvar_dump()を試してください。たぶん空きスペースがどこかにあるかもしれません。

+0

あなたの問題を解決できない場合は、 "==="演算子を使用してください。 –

+0

大丈夫です。 –

+0

ええ、データベースから来たデータに余分なスペースが1つあります。どうしたのだろう? –

0

strcmp()機能

$param = $old_password.$salt; 
$hashed_password = $this->general->hash($param); 
if (strcmp($hashed_password, $userdata->password) == 0) { 
    echo "matched"; exit; 
}else{ 
    echo "didn't match"; exit; 
} 

Refrence使用して文字列を比較しますhttp://php.net/manual/en/function.strcmp.php

-1

この

  // $param=$old_password.$salt; 
     $hashed_password = $this->general->hash($param); 
     $password = $userdata->password; 
     //echo $hashed_password;echo " "; echo $userdata->password;exit; 
     if($hashed_password == $password) 
     { 
      print_r("com");exit; 
     }else 
     { 
      print_r("didn't match");exit; 
     } 
関連する問題