我有大约500条记录的mysql数据库。有一列password
当前包含纯文本密码。
我想将这些密码隐藏到encrypted with bcrypt
。如何从phpmyadmin执行此操作?
附加的第二个问题:登录页面编码是什么来检查这个加密密码并让会员进入?(我使用的是mysqli)
首先,备份数据库。。。然后你必须做这样的事情。。。
由于不了解您的应用程序,我只能举个例子,这可能在您当前的生产代码中不起作用。
$servername = "YOUR_SERVER";
$username = "YOUR_USERNAME";
$password = "YOUR_PASSWORD";
$dbname = "YOUR_DB";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT id, password FROM your_table";
$result = $conn->query($sql);
$newPasswords = [];
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
$newPasswords[] = ["id" => $row["id"], "newPass" = "YOUR_PASSWORD_ENCRYPTED_WITH_BCRYPY"];
}
} else {
echo "0 results";
}
foreach($newPasswords as $user) {
$sql = "UPDATE your_table SET password = $user["newPass"] WHERE id = $user["id"]";
$result = $conn->query($sql);
}
$conn->close();
之后,你可以更改你的应用程序,让用户登录,并使用新的加密密码。要在PHP中使用bcrypt
进行加密,请查看此处。
再次请记住在执行任何操作之前备份您的数据库