查询产生意外结果(sha1)

Spu*_*pud 6 php mysql

我有一个更新用户数据的表单.它发布到这个页面:

<?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时".任何人都可以帮助我或指出我正确的方向吗?提前致谢.干杯

Spu*_*pud 0

感谢您的所有评论。我想报告我已经“解决”了这个问题。一天深夜,我更改了密码输入字段的名称,却忽略了更改 $_POST 值。当然,这样做并不是将 $password 值提供给 $hash。尽管我对此感到尴尬,但我认为分享我的监督对我来说很重要,以举例说明检查所有可能发生错误的地方是多么重要。我未能仔细检查所有内容,并对问题的性质做出了错误的假设。代码工作正常,是键盘前面的螺丝松动导致了问题。干杯