PHP/SQL 登录表单 - 如何检查数据库中的密码
Posted
技术标签:
【中文标题】PHP/SQL 登录表单 - 如何检查数据库中的密码【英文标题】:PHP/SQL Login Form - how to check password in database 【发布时间】:2017-09-22 07:12:09 【问题描述】:目前,我在我的数据库中检查了这样一个 html 表单的用户名和密码:
$exc = $dbh->prepare("SELECT id, cid, fullname FROM user WHERE username LIKE :username AND password LIKE :password");
执行查询时,我需要同时检查区分大小写。
数据库数据:
username: louis
password: goal43
表单数据:
username: LOUIS
password: GOAL43
返回 true - 我该如何解决这个问题?
【问题讨论】:
您已准备好查询!这是重要的一步!下一步就是执行它!LIKE
不区分大小写,请改用=
。
试图检查这个链接。它可能会帮助你***.com/questions/24142512/…
你的意思是密码前面的BINARY?现在要检查一下。
@SherwinObciana 这就是我正在寻找的解决方案 - 密码/用户名前面的 BINARY。
【参考方案1】:
$exc = $dbh->prepare("SELECT id, cid, fullname FROM user WHERE BINARY username LIKE :username AND BINARY password LIKE :password");
希望对你有帮助。我给你的链接
【讨论】:
【参考方案2】:只需使用=
而不是LIKE
LIKE
不区分大小写
【讨论】:
是的,我也不知道 BINARY。【参考方案3】:您已在准备中编写查询。下一步将参数分配给:username
和:password
参数,您可以通过bindParam()
执行。如下所示。
$stmt = $dbh->prepare("SELECT id, cid, fullname FROM user WHERE username = :username AND password = :password");
$stmt->bindParam(':username ', $username);
$stmt->bindParam(':password', $password);
$stmt->execute();
【讨论】:
为什么要投反对票?请提供适当的解释 @downvoter,Pankaj Makwana 解决方案有什么问题? OP 很可能正在执行查询,OP 询问了I want to check if the letters are upper or lowercase
我需要检查大小写 - 对不起我的英语不好。【参考方案4】:
这个问题已经被问过并且包含答案,你可以看到这个链接有很好的回答你的查询 Compare string with case sensitive data
【讨论】:
这些只是其他解决方案。 是的,但是您可以使用它们来解决您的查询,您可以使用 like 和 = ,但是如果您使用 = 那么查询必须是这样 Select * from a_table where attribute = 'k' COLLATE Latin1_General_CS_AS 如果字符大小写匹配,这将匹配以上是关于PHP/SQL 登录表单 - 如何检查数据库中的密码的主要内容,如果未能解决你的问题,请参考以下文章
将html表单中的数据插入sql数据库(html,php,sql)时未保存输入的值
.submit 上的 jQuery 检查数据库中是不是存在登录并处理表单