【发布时间】:2019-10-07 15:12:45
【问题描述】:
我正在处理我的 uni 项目,但我坚持密码恢复。 一切正常,发送邮件,输入新密码,然后进入数据库。 但问题是它没有 md5 加密,并且在我的数据库中很明显。如何在 md5 中实际加密它。 下面是我的代码:
<?php
$email = $_POST["email"];
$reset_token = $_POST["reset_token"];
$new_password = $_POST["new_password"];
$connection = mysqli_connect("localhost", "root", "", "registration");
$sql = "SELECT * FROM users WHERE email = '$email'";
$result = mysqli_query($connection, $sql);
if (mysqli_num_rows($result) > 0)
{
$user = mysqli_fetch_object($result);
if ($user->reset_token == $reset_token)
{
$sql = "UPDATE users SET reset_token='', password='$new_password' WHERE email='$email'";
mysqli_query($connection, $sql);
echo "Password has been changed";
}
else
{
echo "Recovery email has been expired";
}
}
else
{
echo "Email does not exists";
}
正如我已经在这里问过的,如何设置令牌 24 小时而不是永远。 对不起,我对这一切有点新手。
问候。
【问题讨论】:
-
只需将您的
new_password编辑为$new_password = md5($_POST["new_password"]) -
了解prepared statements以防止sql注入。
-
非常感谢大家。约瑟夫欢呼。 @Jens 是的,伙计,我听说了,肯定会这样做。
-
不要使用 MD5。这是非常不安全的——你还不如存储纯文本。
标签: php