检查数据库中的哈希电子邮件地址

时间:2017-01-09 18:24:19

标签: php mysql

我正在处理的网站password_hash()以散列形式存储电子邮件地址 我知道它适用于passowrds,但该网站已经启动,所以不会再回头了。

现在,当新用户尝试注册时,我需要检查用户正在使用的电子邮件地址是否已存在于数据库中。但由于所有电子邮件地址都经过哈希处理,我不能简单地使用:

$mail_query = mysql_query("SELECT email FROM userbase WHERE email='$email'");
                    $mail_num = mysql_num_rows($mail_query);
                    if ($mail_num != 0) {
                    $error = 'This email address is already in use.';

有什么办法吗?

该网站使用旧的MySQL API。

1 个答案:

答案 0 :(得分:1)

唯一的方法,但非常baaaad是获得AAAAALLLL电子邮件并检查所有...抱歉,甚至不记得MySQL_ *函数,但首先你需要做这样的查询:

SELECT email FROM userbase

然后,当你收到所有电子邮件时,我会在每封电子邮件中循环并使用password_verify ...所以在你的循环中你应该有类似的东西:

if(password_verify($email,$hash)) {
    echo "Email is already in use!";
    break;
}

就是这样。祝好运。但是我不喜欢这样的哈希:如果你需要提醒用户密码怎么办?