首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql SHA1密码不重新配置php SHA1密码

mysql SHA1密码不重新配置php SHA1密码
EN

Stack Overflow用户
提问于 2016-02-24 17:25:59
回答 1查看 87关注 0票数 2

因此,我在从数据库中调用用户时遇到了问题,因为SHA1密码与DB SHA1密码没有进行正确的比较。

代码:

代码语言:javascript
复制
if($_SERVER['REQUEST_METHOD'] == "POST") {

if(isset($_POST['email'])) {
    $username = $_POST['email'];
}
if(isset($_POST['password'])) {
    $password = $_POST['password'];
}
if($username && $password) {


    $stmt = "SELECT memID, memFirst, memLast, roleID FROM MEMBER WHERE memEmail LIKE ? AND memPass = SHA1(?)";


    try{
        $STH = $DBH->prepare($stmt);
        $STH->bindParam(1, $username);
        $STH->bindParam(2, $password);
        $STH->execute();

        $STH->setFetchMode(PDO::FETCH_ASSOC);
        echo 'true';

        if($STH->rowCount() == 1) {
            echo 'count';
            $row = $STH->fetch();
            $_SESSION['user'] = $row['memID'];
            $_SESSION['user']['first'] = $row['memFirst'];
            $_SESSION['user']['last'] = $row['memLast'];
            $_SESSION['user']['role'] = $row['roleID'];
            $_SESSION['user']['timeout'] = time();

            header('Location: index.php');

        }

    }catch(PDOException $e) {
        echo $e->getMessage();

    }

}

}

现在DB中唯一的记录是测试用户,他们的记录是:

代码语言:javascript
复制
|memFirst|memLast|roleID|memPass                         |memEmail     |
|test    |test   |3     |7110eda4d09e062aa5e4a390b0a572ac|test@test.com|
                         this is SHA1(1234)

这些是我所调用的值,但它不会带来记录。

当我使用SHA1 DB值运行代码时,它运行得很完美,但是当我尝试根据用户的输入运行它时,它说行计数是0。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-24 17:51:38

sha1总是160位长,产生一个40长的字符串,而您的7110eda4d09e062aa5e4a390b0a572ac只有32位长。

  • sha1 您的列长度不够长,您需要增加它的长度以适应哈希。 所以现在,您必须清除该行,更改您的列并创建一个新的散列。

作为旁白:

如果您稍后决定使用password_hash(),您必须记住它会产生一个60长的字符串。

它的手册建议使用255。

  • http://php.net/manual/en/function.password-hash.php

“使用bcrypt算法(缺省值为PHP 5.5.0)。请注意,随着新算法和更强的算法添加到PHP中,此常量将随着时间的推移而改变。因此,使用此标识符的结果长度可能随时间而变化。因此,建议将结果存储在一个可扩展到60个字符以上的数据库列中(255个字符将是一个不错的选择)。”

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35608960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档