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)时未保存输入的值

如何正确登录到 mySQL

.submit 上的 jQuery 检查数据库中是不是存在登录并处理表单

Spring Boot如何在更新前检查数据库中的编码密码是不是与表单中的密码匹配

如何检查表单字段中是不是有呈现控制器的树枝模板中的数据