php - 在 mysql 查询中使用 sha1 哈希更改密码搜索 ID

标签 php mysql pdo sha1

我正在尝试使用 PHP PDO 中的以下代码更改用户的密码:

public function resetaSenha(string $senha, string $id){
            $con = $this->conexao;

            $sql = "UPDATE users SET senha = :senha WHERE id = sha1(:id)";

            $obj = $con->prepare($sql);
            $obj->bindParam(":senha", $senha);
            $obj->bindParam(":id", $id);
            $obj->execute();
        }

我用 id 1 的 sha1 散列和密码调用这个函数(我这样做只是为了测试):

    require_once("funcoes_db.php");

    $func = new FuncoesDb();
    $func->resetaSenha("05fe7461c607c33229772d402505601016a7d0ea", "356a192b7913b04c54574d18c28d46e6395428ab");

但它不起作用。如果我将查询更改为:

$sql = "UPDATE users SET senha = :senha WHERE id =:id";

调用函数:

    `$func->resetaSenha("05fe7461c607c33229772d402505601016a7d0ea", "1")`;

但我通过 URL 获取值,我需要对它们进行加密。为什么这不是那样工作的?

最佳答案

我认为您在没有意识到的情况下打错了字。查询字符串在 :id 上调用 sha1 函数,而它应该在 :senha 上调用以散列密码。

$sql = "UPDATE users SET senha = :senha WHERE id = sha1(:id)";

应该是

$sql = "UPDATE users SET senha = sha1(:senha) WHERE id = :id";

关于php - 在 mysql 查询中使用 sha1 哈希更改密码搜索 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36345666/

相关文章:

php - 确定网页(或文本段落)的上下文/含义

MySQL 为一列禁用停用词

Python:将列名作为变量添加到mysql表中

Mysql 返回 NULL 而不是值

PHP PDO - 无效参数编号 : parameter was not defined when using RLIKE

php - PDOException'无效参数号: parameter was not defined

php - 生成并存储今天的日期 + 11 个月和 + 1 年

php - 从数据库获取事件到日历页面

php - 如何在 php 中使用 prepare 语句从数据库中获取数据?

php - URL 和 mod_rewrite : use many special chars and keep data safe from attacks