【发布时间】:2019-02-10 13:57:38
【问题描述】:
我需要将 md5 哈希密码发送到数据库。
<?php
$username = filter_input(INPUT_POST, 'name');
$password = filter_input(INPUT_POST, 'password');
print_r($_POST['name']);
if (empty($username)){
echo "Username should not be empty"; die();
}
if (empty($password)){
echo "Password should not be empty"; die();
}
$host = "localhost";
$dbusername = "root";
$dbpassword = "";
$dbname = "db_account";
//create connection
$conn = new mysqli($host, $dbusername, $dbpassword, $dbname);
if (mysqli_connect_error()){
die('Connect Error ('. mysqli_connect_error() .') '
. mysqli_connect_error());
} else{
$sql = "INSERT INTO t_account (name, pwd)
values ('{$username}','MD5({$password})')";
if ($conn->query($sql)){
echo "Account was created successfully!";
}
else{
echo "Error: ". $sql."<br>". $conn->error;
}
$conn->close();
}
?>
当我用密码(例如 123456)填写注册表时,它会像这样 (MD5)123456 将其发送到数据库,但不是作为散列码。
另外注册成功后只显示@echo后的文字,是否可以将用户重定向到另一个页面?
【问题讨论】:
-
md5 非常过时 - 请不要使用它。使用
password_hash和password_verify安全地存储用户凭据。另外:使用参数化查询来保护您的数据库 - 过滤器函数不会完全保护您免受 SQL 注入攻击。 -
是的,我知道,但是游戏接受 md5 密码,所以我可能需要让它接受不同的散列密码,好吧,我没有这方面的技能。