ai didi

php - mysql和php突然大小写敏感?

转载 作者:行者123 更新时间:2023-11-29 03:58:43 24 4
gpt4 key购买 nike

基本上,我更改了我的 php 登录代码,现在当我登录时,MySQL 要求大小写匹配?!

    $match = "select * from users where username = '".$username."' and password = '".$password."';";

echo $match;

如果我的用户名的 CaSe 与数据库不匹配,那么它不会返回任何行。

如果用户注册为 ADMIN,那么我希望他们能够以“admin”或“AdMiN”等身份登录。有什么想法吗?

非常感谢:)

最佳答案

我猜该列的排序规则已更改。参见 this MySQL page about case sensitivity in string comparison了解更多。为了使自己免受此类问题的影响,例如:

$match = "select * from users where UPPER(username) = '".strtoupper($username)."' and password = '".$password."';";

是常用的技巧。但是,正如其他人所观察到的那样,了解排序规则在数据库中的工作原理并适本地使用它是最好的解决方案。获得正确的数据库排序规则并依赖它应该允许数据库使用用户名列上的任何索引,而不是扫描表。

还要确保你在避开 SQL injection攻击——如果用户输入包含单引号的用户名,您当前的代码会发生什么情况?

您可能还需要考虑允许哪些字符作为用户名,以及您使用的字符集——“René”是有效的用户名吗?它会成功地从您的前端通过数据库并退出而不受字符集问题的影响吗?乔尔·斯波尔斯基的 excellent article on Unicode在某些时候可能值得一读。

关于php - mysql和php突然大小写敏感?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4733606/

24 4 0
文章推荐: MySQL - "select"速度
文章推荐: sql - MySQL 查找相关文章
文章推荐: php - 我应该在此处使用表格还是在配置文件中使用硬编码值?
文章推荐: php - 分页 Wordpress $wpdb 查询?
行者123
个人简介

我是一名优秀的程序员,十分优秀!

滴滴打车优惠券免费领取
滴滴打车优惠券
全站热门文章
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com