【问题标题】:Where to put MD5 function to make it work?在哪里放置 MD5 功能使其工作?
【发布时间】: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_hashpassword_verify 安全地存储用户凭据。另外:使用参数化查询来保护您的数据库 - 过滤器函数不会完全保护您免受 SQL 注入攻击。
  • 是的,我知道,但是游戏接受 md5 密码,所以我可能需要让它接受不同的散列密码,好吧,我没有这方面的技能。

标签: php echo md5


【解决方案1】:

尝试使用 PHP md5() 函数:

$password = md5(filter_input(INPUT_POST, 'password'));

还有你的声明:

$sql = "INSERT INTO t_account (name, pwd)
values ('{$username}','{$password}')";

我强烈建议您使用准备好的语句。不难学习,时间投入也很好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-22
    • 1970-01-01
    相关资源
    最近更新 更多