我正在尝试使用 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/