-3

我有一个包含用户名和密码的数据库。用户名是小写的。但是当我输入大写时它仍然登录。如何修复该错误。

4

3 回答 3

1

您的数据库可能正在使用默认排序规则,它不区分大小写。

使用区分大小写的排序规则定义您的用户名列,或者在 SQL 查询中显式传递该排序规则。

例子:

SELECT * FROM [User] WHERE username = '<username>' AND password = '<password>' COLLATE latin1_general_cs

这是供您参考的mysql文档:

http://dev.mysql.com/doc/refman/5.0/en/case-sensitive.html

于 2013-06-30T16:11:28.757 回答
0

如果要将用户名与用户输入进行比较,则必须使用区分大小写的字符串比较函数。

例如,如果您将用户名存储在名为 的表中info,并通过表单发布获取用户输入的值,那么您的代码应该类似于

$con = mysql_connect ("localhost", "root", "root") or die ("Sorry! There was an error.");
$db = mysql_select_db ("myDB", $con);
$cmd = "select username from info";
$res = mysql_query ($cmd);
$row = mysql_fetch_array ($res);
if (!strcmp ($row['username'], $_POST['username']))
  {
    //code to handle event where entered username matches.
 }
else
  {
   //code that handles the event when entered username is not on the list.
 }

或者,您可以使用==or===正如@kallum所说的那样。

希望有帮助。

于 2013-06-30T16:11:48.243 回答
-1

登录功能将只检查匹配的字符串。如果您需要完全匹配(相同的大小写),那么而不是,例如:

if (loginName == databaseName)

采用:

if (loginName === databaseName)

三等号符号应确保匹配每个字符的大小写。

于 2013-06-30T16:04:09.510 回答