0

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

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 加密。

我试图键入存在于客户表中的用户,但它不起作用。

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

4

2 回答 2

0

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

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

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

于 2013-07-31T15:21:22.513 回答
-3

你需要用 md5 加密你的密码

if(isset($_POST['submitBtn'])){
    if($_POST['senderLogin'] == 'customer'){
        $checkIfExists = new CustomersDAO();
        $stam = $checkIfExists->isExist($_POST["name"], md5($_POST["password"]) );
        var_dump($stam);
    }
}
于 2013-07-31T13:29:33.663 回答