微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 使用返回0的查询行比较mysql密码哈希值(不工作)

我正在使用mysql数据库为我的网站创建一个登录系统.

用户注册时,它使用以下方法将密码保存到数据库

$password = hash("sha512","somesalt".$password."moresalt");

然后,当我登录时,我使用相同的散列函数将输入的密码与数据库中的密码进行比较.

为了比较数据库我使用这个:

$query = MysqL_query("select * from users where password='$password' AND email='$email'", $connection);
$rows = MysqL_num_rows($query);
if ($rows == 1) {//do login stuff}

但是行总是返回0.当我从寄存器和登录删除哈希函数时,它会正常登录.怎么了?

如果有人想知道,我会使用MysqLi,但我的webhosting的数据库版本是旧的.他们使用5.2我相信.

我忘了提到我确实检查过以确保数据库确实与这些图片中看到的相符(不能嵌入图片所以链接):

https://drive.google.com/file/d/0B_u6weYp5wTCQng5eVhTSkZFRDg/view?usp=sharing
https://drive.google.com/file/d/0B_u6weYp5wTCQVRXTkNqdzhWUFE/view?usp=sharing

解决方法:

数据库中密码字段的长度是多少?

我觉得原因是哈希密码长度太长而且保存到数据库部分或者它被删除了…

然后当你比较你得到0行…

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐