我有一个更新用户数据的表单.它发布到这个页面:
<?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);
?>
Run Code Online (Sandbox Code Playgroud)
(我已经删除了与这个问题无关的事情)
我相信正在发生的事情是当'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);
Run Code Online (Sandbox Code Playgroud)
当我回显$ num时,它返回值0.我想知道是否有办法确保$ salt的值在$ hash中使用时保持不变,然后当它更新字段'stamp时".任何人都可以帮助我或指出我正确的方向吗?提前致谢.干杯
感谢您的所有评论。我想报告我已经“解决”了这个问题。一天深夜,我更改了密码输入字段的名称,却忽略了更改 $_POST 值。当然,这样做并不是将 $password 值提供给 $hash。尽管我对此感到尴尬,但我认为分享我的监督对我来说很重要,以举例说明检查所有可能发生错误的地方是多么重要。我未能仔细检查所有内容,并对问题的性质做出了错误的假设。代码工作正常,是键盘前面的螺丝松动导致了问题。干杯
| 归档时间: |
|
| 查看次数: |
499 次 |
| 最近记录: |