Php 比较MD5哈希密码不起作用

Php 比较MD5哈希密码不起作用,php,mysql,passwords,md5,Php,Mysql,Passwords,Md5,所以我刚刚学习了在PHP/MySQL中使用MD5哈希和salt存储密码。我使用的方法是md5(md5($row[“id”].$password)),因此salt是我的SQL表中用户id的md5散列(它是一个自动递增的INT),连接到输入的密码字符串,然后重新散列 我遇到的问题是,当我尝试创建一个测试帐户,然后使用该测试帐户登录时,我在登录时生成的哈希与我在创建帐户时创建的哈希不匹配 登录代码: <?php $login = mysqli_connect("hiding this info

所以我刚刚学习了在PHP/MySQL中使用MD5哈希和salt存储密码。我使用的方法是
md5(md5($row[“id”].$password))
,因此salt是我的SQL表中用户id的md5散列(它是一个自动递增的INT),连接到输入的密码字符串,然后重新散列

我遇到的问题是,当我尝试创建一个测试帐户,然后使用该测试帐户登录时,我在登录时生成的哈希与我在创建帐户时创建的哈希不匹配

登录代码:

<?php

$login = mysqli_connect("hiding this info for obvious reasons");

if ($_POST["login"])
{

    $email = $_POST["email"];
    $password = $_POST["passsword"];

    $query = "SELECT * FROM useraccs WHERE email='$email'";

    if ($result = mysqli_fetch_array(mysqli_query($login,$query)))
    {
        $hashpass = md5(md5($result["id"]).$password);

        if ($hashpass == $result["password"])
        {

            $errors = "Logged in succesfully.";

        }

    }
    else
    {
        $error.= "E-mail/Password do not match anything in our database.";
    }

}

?>

首先,请查看注释中的警告,您的代码非常不确定

关于md5:您正在使用

mysqli_fetch_array(mysqli_query($login,$query))["id"];

这将始终返回一个数组。请确保只获取该字段。

现在是2016年,为什么要使用md5作为密码?危险:您很容易受到您需要保护的密码的攻击。危险:您正在使用并且需要保护您用户的密码。如果这是一个实时网站或打算上线,请将其称为伪装的祝福。
$\u POST[“Passbrow”]
三个s正确吗?
mysqli_fetch_array(mysqli_query($login,$query))["id"];