php - 密码不区分大小写

标签 php mysql

我在我创建的网站中有一个登录表单。我使用 PHP 验证密码,密码存储在 MYSQL 数据库中。我面临的问题是密码不区分大小写。它接受不带字符的字符考虑这种情况。我正在使用 Kubuntu linux 操作系统

有人能帮忙解决这个问题吗?我应该为 mysql/my.cnf 中的 COLLATION 使用什么值来避免这种情况?或者还有其他解决方案吗?

非常感谢任何帮助。

谢谢。

最佳答案

您的 MySQL 排序规则可能不区分大小写。将存储密码的列更改为区分大小写的排序规则。

一些经验法则:

  • 当排序规则以 _ci 结尾时,它不区分大小写。
  • 当排序规则以 _cs 结尾时,它区分大小写。

例子:

  • utf8_general_ci 不区分大小写。
  • utf8_bin 区分大小写

但是,一个重要的注意事项

如果您遇到此问题,可能是密码存储错误。您不应以纯文本形式存储密码,而应存储密码的哈希值,并适当加盐。

然后,当用户登录时,您对其条目进行哈希处理,并将哈希值与您的数据库保存的内容进行比较。当两者相等时,用户可能输入了正确的密码。

关于php - 密码不区分大小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10085098/

相关文章:

php - Yii 自定义模型错误

mysql - 如何使用vb.net将数据保存到mysql数据库

php - 如何从 PHP 中的图像变量加载 blob

php - 在同一网格上搜索多个日期选择器

php - 如何组合这两个 PHP 数组?

php - 自定义 Artisan 命令以执行多个命令

php - Zend 框架 2 数据库 : Make a part of the query negative using Predicate objects

PHP 日期转换(带斜杠)

mysql - 如何使用 Windows 窗体 (vb.net) 将数据库单列行存储到数组中

php - 使用 anchor 标记的 OnClick 事件使用 php 检索数据库数据