【问题标题】:Password submitted in form does not match password at the database表单中提交的密码与数据库中的密码不匹配
【发布时间】:2013-07-31 13:27:12
【问题描述】:

我写了一个登录表单,点击提交按钮后,我想检查用户是否存在于数据库中。

if(isset($_POST['submitBtn'])){
    if($_POST['senderLogin'] == 'customer'){
        $checkIfExists = new CustomersDAO();
        $stam = $checkIfExists->isExist($_POST["name"], $_POST["password"]);
        var_dump($stam);
    }
}

我喜欢这样的检查:

public function isExist($name, $password) {
    $this->connect();
    if($this->con){
        $sql = "SELECT * FROM customers WHERE name=? AND password=?";
        $stmt = $this->db->prepare($sql);
        $password = md5($password);
        $stmt->bindParam(1, $name);
        $stmt->bindParam(2, $password);
        $stmt->execute();
        $fetched = $stmt->fetchColumn();
        $this->disconnect();
        if($fetched > 0) {
            return true;
        } else { 
            return FALSE;}
    }
}

数据库中的密码使用 md5 加密。

我尝试键入存在于客户表中的用户,但没有成功。

我尝试只匹配名称并且它有效,所以问题在于提交的密码与数据库中的密码的比较。

【问题讨论】:

  • OT 但 MD5 不是加密,它不是散列密码的推荐方法。
  • 您是否检查过$_POST["password"] 中的密码是否正确?
  • 为了让您开始调试并帮助您解决任何未来的问题,请尝试回显您的查询。确保它正在寻找的是您认为的内容,并查看它是否与数据库中的内容相匹配。通常问题是人们在将密码存储在数据库中时忘记了对密码进行哈希处理,但更好的是,尽管将其扔掉并使用预制的身份验证库,因为粗心的人有很多陷阱,滚动你的密码是没有意义的拥有,除非您有高度自定义的要求
  • 您确定列的长度对于您的 md5 加密通行证足够长吗?我曾经有过 25 的长度,有时太短了,我会遇到和你现在面临的同样的问题。

标签: php login pdo md5


【解决方案1】:

您的代码似乎没有任何问题,而且...

“我尝试只匹配名称并且它成功了,所以问题在于提交的密码与数据库中的密码的比较。”

当使用带有密码或敏感数据的哈希函数时,开发人员通常会在其上附加“salt”字符串,以帮助防止这些哈希值被轻易破坏。我看到在您的代码中,您只需在密码上使用md5(),而无需任何盐。也许在脚本的另一点,例如在将用户添加到数据库的函数中,您正在用一些盐对密码进行哈希处理,显然哈希不匹配。

【讨论】:

  • 这似乎是一个评论而不是一个答案。
【解决方案2】:

你需要用 md5 加密你的密码

if(isset($_POST['submitBtn'])){
    if($_POST['senderLogin'] == 'customer'){
        $checkIfExists = new CustomersDAO();
        $stam = $checkIfExists->isExist($_POST["name"], md5($_POST["password"]) );
        var_dump($stam);
    }
}

【讨论】:

  • 一个人不会简单地用 md5() “加密”任何东西,当他绑定他的参数时他已经在这样做了
  • 我在 isExist 函数中做了
猜你喜欢
  • 2014-12-29
  • 1970-01-01
  • 2017-11-12
  • 2013-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-30
相关资源
最近更新 更多