【发布时间】:2012-12-08 09:05:53
【问题描述】:
我正在做密码和用户名登录查询,看起来像这样
$query = "SELECT id FROM users WHERE username = ? AND password = ?";
我输入了我的用户名和密码。问题是说我有一个用户名“用户”和他们的密码“密码”。当我在字段中输入“用户”和“密码”时,它仍然返回结果。所以这使得资本毫无用处。难道我做错了什么?有没有更好的方法来解决这个问题?用户名的大写问题是相同的。当我想要一个精确的字符串匹配时,它就像是在做一个模式匹配。我也尝试过二进制,希望它可能会改变它但结果相同。
$stmt = $this->db->prepare($query);
$stmt->bind_param("ss", $user, $pass);
$stmt->execute();
【问题讨论】:
-
如何将变量传递给这个查询?你的桌子是什么类型的?
-
密码应该被散列(和加盐),在这种情况下,散列大小写无关紧要,但散列只能由正确大小写的密码生成。
-
users的排序规则是什么? -
您是否有任何关于如何正确地散列和加盐密码的链接或信息?我知道它是什么我只是不知道该怎么做。
-
您指的是我的密码和用户名列的数据类型吗?如果是这样,它们是 varchar