PHP MySQL的。我可以将纯文本电子邮件(php $ _POST)与mysql AES_ENCRYPT值进行比较

时间:2017-01-08 18:31:23

标签: php mysql

我计划使用电子邮件作为登录ID。

用户注册,我在mysql中记录

INSERT INTO `table_name` ( `Email` ) VALUES ( AES_ENCRYPT(?, "some_hash") )

?$_POST['email']

当用户想要登录时,我想这样做

SELECT `Password`, AES_DECRYPT(`Email`, "some_hash") AS `Email` FROM `table_name` WHERE `Email` = AES_ENCRYPT(?, "some_hash")

?又是$_POST['email']

这不起作用(我无法获取散列电子邮件)。据我所知,不可能将$_POST值与mysql AES_ENCRYPT值进行比较?

更新

抱歉,似乎一切正常。可能由于一些疏忽错误而无法正常工作。

现在我用了

SELECT `Password`, AES_DECRYPT(`Email`, "some_hash") AS `Email` FROM `table_name` WHERE `Email` = AES_ENCRYPT(?, "some_hash")  

并使用密码和电子邮件获取数组。

这是更新的工作代码:

try {
$stmt = $db->prepare( '
SELECT `Password` 
FROM `table_name` 
WHERE `Email` = AES_ENCRYPT(?, "some_hash")  
;' );
$stmt->execute( array( trim($_POST['email']) ) );
$arr = $stmt->fetchAll(PDO::FETCH_ASSOC);
}

使用WHERE Email = AES_ENCRYPT(?, "some_hash") i哈希(AES_ENCRYPTtrim($_POST['email'])并将其与mysql列Email中的哈希值进行比较。

0 个答案:

没有答案