【问题标题】:PHP set Hash isn't the same as Checked hash with Swift appPHP set Hash 与使用 Swift 应用程序的 Checked hash 不同
【发布时间】:2015-04-24 08:56:32
【问题描述】:

我正在尝试使用 PHP 为密码设置哈希,我设置密码的代码是:

$user = $_POST['email'];
$pass = $_POST['password'];
$hashed = hash("md5", $pass);
$sql = "UPDATE Users set password=" . $hashed . " where email=" . email;

这将根据我的需要将密码设置为散列版本。 但是当我尝试检查时,使用:

$user = $_POST['email'];
$pass = $_POST['password'];
$hashed = hash("md5", $pass);
$sql = "SELECT * FROM Users where email=" . $user . " and password=" . $hashed;

使用完全相同的输入,代码不会返回任何内容。有谁知道为什么?我不确定它是否相关,但我正在使用 Swift 应用程序进行发布。

【问题讨论】:

  • 您是否确认$pass$hashed 在这两种情况下是相同的和/或它们有何不同?这段代码实际上应该失败并出现 SQL 语法错误,所以我假设这不是您的 实际 代码。另外,不要使用 MD5 对密码进行哈希处理,请使用 password_hash API。
  • @Ealau 查看我的回答,如果它解决了您的问题,请不要忘记检查是否正确;-)

标签: php mysql sql swift hash


【解决方案1】:
$user = $_POST['email'];
$pass = $_POST['password'];
$hashed = hash("md5", $pass);
$sql = "UPDATE Users set password='" . $hashed . "' where email='" . email . "'";


$user = $_POST['email'];
$pass = $_POST['password'];
$hashed = hash("md5", $pass);
$sql = "SELECT * FROM Users where email='" . $user . "' and password='" . $hashed . ''';

【讨论】:

    【解决方案2】:

    两个 SQL 语句都缺少两个字符串的引号。我没有看到实际执行 $sql 语句的 mysqli_* 或 PDO 代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-10-31
      • 1970-01-01
      • 2016-10-29
      • 2020-11-28
      • 2010-11-30
      • 1970-01-01
      • 2014-08-31
      相关资源
      最近更新 更多