1

以下の関数を使用しています。ユーザーを登録すると、ハッシュは正常に機能しているようです。ログインしようとすると、ハッシュが一致しません。正しいハッシュと追加のハッシュがあります。

問題は何ですか?

function salt($pass){
$salt = 'hello';
return hash('sha512', $pass.$salt);
}

function valid_credentials($user,$pass) {
$user = mysql_real_escape_string($user);
$pass = salt($pass);
$total = mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `user_name` = '".$user."' AND `password` = '{$pass}' ");
return (mysql_result($total, 0) == '1' ) ? true : false;
}

function add_user($user, $pass) {
$user = mysql_real_escape_string(htmlentities($user));
$pass = salt($pass);
$time = now();
mysql_query("INSERT INTO `users` ( user_name, password, date_created ) VALUES ( '{$user}', '{$pass}', '{$time}' )");
}
4

2 に答える 2

1

値をdbテーブルに挿入する前後に返された値を再確認してください。トリム機能でエコーします。または strcmp を使用して、生成された値でデータベースに挿入された値を確認します。

于 2012-07-14T06:21:05.193 に答える
1

あなたの検証コードでは、次の行だと思います:

$total = mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `user_name` = '".$user."' AND `password` = '{$pass}' ");

次のように変更する必要があります。

$total = mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `user_name` = '".$user."' AND `password` = '".$pass."' ");

現在、パスワード列が「{$pass}」と等しいかどうかをチェックしているようです。

于 2012-07-14T06:03:02.307 に答える