ユーザーデータを更新するためのフォームがあります。これは、このページにポスト:予期しない結果を生成するクエリ(sha1)
<?php
//Update user table
session_start();
include 'sql_connect_R.inc.php';
$id = mysql_real_escape_string($_POST['userID']);
$password = mysql_real_escape_string($_POST['user_passwrd']);
$salt = time();
$hash = sha1($password . $salt);
mysql_query("UPDATE users SET user_passwrd = '$hash', stamp = '$salt', pending = 'yes'
WHERE userID = '$id'");
mysql_close($con);
?>
(私はこの質問に適切なものではなくて編集した)
を私は何が起こっているのかと考えている、それは「スタンプ」欄は、$塩が移入されているときであります$ハッシュが計算されているときとは異なる値を取得しています。私は$ numはエコーとき
$qry="SELECT * FROM users WHERE userlogin = '$login' AND user_passwrd = sha1(CONCAT('$password', stamp))";
$result=mysql_query($qry);
$row = mysql_fetch_assoc($result);
$num = mysql_num_rows($result);
それは$の値が残って塩を確実にする方法がある場合、私は思ったんだけど0 の値を返します。このため、ユーザーのサインで、ここでチェックされていますそれが$ hashで使用されているときと同じとき、そしてそれがフィールド 'スタンプ'を更新しているとき。 誰でもこれを手伝ったり、正しい方向に私を指揮することはできますか?前もって感謝します。 乾杯
PHPが間違ったハッシュを挿入したか、またはMYSQLが間違ったハッシュを探しているかを確認してください。それは問題空間を半分に分割します。 –
間違ったハッシュが挿入されています。私は、パスワードがハッシュされているときの$ saltの値と、データベースに挿入されているときの$ saltの値との間に違いがあると思うが、本当にわからない。 – Spud
'user_passwrd'のカラム定義とは何ですか? – Ben