我有一个用于更新用户数据的表单。它提交到这个页面:
<?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);
?>
我相信发生的情况是当"stamp"字段用$salt填充时,与计算$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的结果。我想知道是否有一种方法可以确保 $salt 的值在被用于 $hash 和更新 'stamp' 字段时保持不变。能否有人帮助我或指点我正确的方向?谢谢。
user_passwrd
的列定义是什么? - Ben