登录系统无法运行PHP哈希

登录系统无法运行PHP哈希,php,hash,login,Php,Hash,Login,我正在创建一个登录系统。但无论出于什么原因,我都无法正确验证密码。当我知道密码是正确的时候,它总是告诉我密码是错误的。以下是表格代码: <form id="login" action="login_processing.php" method="post"> <label2>Email</label2> <input type="text" name="email"> <label2>Password</l

我正在创建一个登录系统。但无论出于什么原因,我都无法正确验证密码。当我知道密码是正确的时候,它总是告诉我密码是错误的。以下是表格代码:

<form id="login" action="login_processing.php" method="post">
    <label2>Email</label2>
    <input type="text" name="email">
    <label2>Password</label2>
    <input type="password" name="password">
    <a class="forgot_password" href="forgot.php">Forgot password?</a>
    <input type="submit" class="custom_submit" name="sign_in" value="Sign In">
    <br />
    <br />
    <br />
    <a href="#sliderName" class="next">Create Account</a>
</form>
它一直告诉我我的密码不正确。。。当我知道它不是。我似乎不知道错误是什么,这让我发疯


任何帮助都将不胜感激。

在您的注册脚本中,您使用的是concated salt和pw的单个散列,但在您的登录脚本中,您使用的是嵌套的hash()调用

注册:

$hash=hash('sha256',$salt.$hash)

登录:

$hash=hash('sha256',$userData['salt'].hash('sha256',$password))


注意到区别了吗?

在注册脚本中,您使用的是单一的concated salt和pw散列,但在登录脚本中,您使用的是嵌套的hash()调用

注册:

$hash=hash('sha256',$salt.$hash)

登录:

$hash=hash('sha256',$userData['salt'].hash('sha256',$password))


注意到区别了吗?

这里就是我搞砸的地方。。在我匆忙中,我从来没有真正在创建新帐户时对密码进行哈希运算。所以它不是散列任何东西。。。。就它本身。因此,我在“新帐户”页面中添加了一行(散列原始密码),解决了整个问题:

function createSalt(){
        $string = md5(uniqid(rand(), true));
        return substr($string, 0, 3);
    }
        $hash = hash('sha256', $password); //this was forgotten originally :(
        $salt = createSalt();
        $hash = hash('sha256', $salt . $hash);  

现在添加了这些代码,上面的代码就可以正常工作了。谢谢

这就是我搞砸的地方。。在我匆忙中,我从来没有真正在创建新帐户时对密码进行哈希运算。所以它不是散列任何东西。。。。就它本身。因此,我在“新帐户”页面中添加了一行(散列原始密码),解决了整个问题:

function createSalt(){
        $string = md5(uniqid(rand(), true));
        return substr($string, 0, 3);
    }
        $hash = hash('sha256', $password); //this was forgotten originally :(
        $salt = createSalt();
        $hash = hash('sha256', $salt . $hash);  

现在添加了这些代码,上面的代码就可以正常工作了。谢谢

尝试在if子句中回显您的条件,
echo mysql\u num\u rows($findLogin)查看这是否返回了您期望的内容。。对代码进行故障排除的第一步是将所有内容都回显,并确保数据设置正确。我认为我们需要看到代码在注册过程中对密码进行哈希运算,否则我们只能看到等式的一面。@tradyblix也打败了我;如果密码匹配,这将导致成功登录?此外,我建议您在线查找登录脚本教程。。你的似乎。。。乱七八糟的,而且你似乎不完全知道自己是什么doing@Arms是的,这是从我创建的一个编辑中复制和粘贴的,我试图测试我修复到原始问题的问题。。。这是“!=”这仍然给了我同样的答案issue@arms我在createaccount页面上添加了函数,用于引用在if子句中回显您的条件,
echo mysql\u num\u rows($findLogin)查看这是否返回了您期望的内容。。对代码进行故障排除的第一步是将所有内容都回显,并确保数据设置正确。我认为我们需要看到代码在注册过程中对密码进行哈希运算,否则我们只能看到等式的一面。@tradyblix也打败了我;如果密码匹配,这将导致成功登录?此外,我建议您在线查找登录脚本教程。。你的似乎。。。乱七八糟的,而且你似乎不完全知道自己是什么doing@Arms是的,这是从我创建的一个编辑中复制和粘贴的,我试图测试我修复到原始问题的问题。。。这是“!=”这仍然给了我同样的答案issue@arms我在“创建帐户”页面上添加了该函数以供参考
function createSalt(){
        $string = md5(uniqid(rand(), true));
        return substr($string, 0, 3);
    }
        $hash = hash('sha256', $password); //this was forgotten originally :(
        $salt = createSalt();
        $hash = hash('sha256', $salt . $hash);