检查密码值是否相同

时间:2011-04-10 05:07:22

标签: php mysql

我需要检查值是否相同。如果$_POST['password'] = PASS而不是pass,则会返回0行。

这个脚本应该回显1或0.它可以正常工作,但我想让它更安全。

$_POST['username'] = 'admin';
$_POST['password'] = 'pass';
    mysql_connect('localhost', '', '');
    mysql_select_db('database');
    echo $num = mysql_num_rows(mysql_query("SELECT username,password FROM users WHERE username = '". mysql_real_escape_string($_POST['username']) . "' AND password = '". mysql_real_escape_string($_POST['password']) . "'"));

2 个答案:

答案 0 :(得分:7)

如果你想让它更安全,你根本不应该在数据库中以纯文本形式存储密码。存储密码的哈希值(例如MD5或SHA1),最好添加一个盐,然后每次将其与输入密码的哈希值进行比较是一种更好的方法。

对于您的查询,听起来您想让它区分大小写。为此,您需要将密码列上的排序规则更改为区分大小写的排序规则。这些是以_cs结尾的排序规则,例如latin1_general_cs。

答案 1 :(得分:1)

MySQL会进行大小写异常比较,这就是PASS == pass的原因。您可以通过将列类型设置为BINARY来规避这一点。除此之外,永远不要将密码明文存储在数据库中,而是使用sha或md5。