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