我有一個更新用戶數據的表單。它發佈到這個頁面:查詢產生意想不到的結果(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);
?>
(我已經編輯了東西不相關的這個問題)
我相信所發生的事情是,當「戳」領域正在被使用$鹽填充它正在計算$ hash的值。因此,當用戶登錄,並在這裏檢查:
$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);
當我回聲$ NUM如果有一種方法,以確保它返回0 我想知道一個值的$鹽保留價值當它在$ hash中使用時,以及在更新字段'stamp'時是相同的。 任何人都可以幫助我或指出我在正確的方向嗎?提前致謝。 乾杯
檢查PHP是否插入了錯誤的散列或者MYSQL正在尋找錯誤的散列。這將把問題空間分解成一半。 –
正在插入錯誤的散列。我認爲當密碼被哈希時$ salt的值和$ salt在數據庫中插入時的值是有區別的,但我並不確定。 – Spud
user_passwrd的列定義是什麼? – Ben