【发布时间】:2016-10-15 23:43:17
【问题描述】:
我有一个有多个用户的表。今天用户在平面文本密码。
现在我用VARCHAR (256) 创建了一个新列,将每个用户的密码哈希放在一个名为password 的列中。
我做了一个获取每个用户的PHP,并根据密码哈希进行更新:
<?php
require("Db.class.php");
require("password.php");
$db = new Db();
$result = $db->query("SELECT idUser, pass FROM user");
if(count($result) == 0){
echo "Error!";
$db->CloseConnection();
}
else if(count($result) > 0){
foreach($result as $user){
$passDB = $user["pass"];
$idUser = $user["idUser"];
$hash = password_hash($passDB, PASSWORD_BCRYPT);
$resultUser = $db->query("UPDATE user SET password = :hash WHERE idUser = :idUser",
array("hash" => $hash, "idUser" => $idUser));
}
$db->CloseConnection();
}
?>
php 适用于几行。然后,SQL 不会更新后面的行,因为效率太低了。
有没有更好的方法来做我想做的事?我必须将 php 与 mysql 混合,因为我必须使用库中的 password_hash 函数转换纯文本密码:password compat
【问题讨论】: