2012-04-02 22 views
0

次のコードは「これはわかりません」という結果を生成します。なぜどんなアイデア? 2つの文字列が同じ長さで、最初の文字から一致し、実際に視覚的に等しい場合、なぜ等価演算子と等しくないのですか?PHPの文字列は等しくないがstrposと同じ長さ

$userid = (int) $_POST['username']; 
$password = trim($this->input->post('password')); 
$hashed = trim(md5($password . $this->salt)); 
$success = false; 
if($this->users[$userid]->password == $password) { 
    $success = true; 
} 
else { 
    if(strpos($hashed, $this->users[$userid]->password) === 0 && 
     strlen($hashed) == strlen($this->users[$userid]->password)) { 
     echo "I don't understand this"; 
    } 
} 

回答には、md5を使用してパスワードをハッシュすることをお勧めします。

は、私はあなたがハッシュとしてパスワードを保存していると思っていPHP5.3.2

答えて

1

を使用しますか?パスワード自体ではなく、ユーザーのパスワードとハッシュを比較する必要があります。

この変更:これに

if($this->users[$userid]->password == $password) { 

if($this->users[$userid]->password == $hashed) { 
+1

ああ<ここ虚辞を挿入>!愚かな監視。私はこれを一時間見てきて、それを見ることができませんでした。ありがとう。 – Djehuty

関連する問題