У меня есть таблица mysql со столбцами userid, password, hashedpassword. Я использовал для хранения паролей в виде обычного текста в столбце пароля. Теперь я понимаю, что это неприемлемо и хочу теперь хешировать всех и хранить в правильном направлении в поле hashedpassword.Как хэш несколько паролей сразу, эффективно?
Вы будете злиться на сценарий ниже, потому что это ужасно неэффективно. Как вы могли догадаться, он был отключен на моем сервере. Может ли кто-нибудь помочь явно неопытным программистам с надлежащим образом обновить все эти поля в базе данных? Ясно, что подключение к базе данных для каждой записи идиотское: (...
$sql = "SELECT *
FROM users";
$result = mysqli_query($connection, $sql);
if (!$result) {
die("Database query failed: " . mysqli_error($connection));
} else {
while ($row=mysqli_fetch_array($result)) {
$userid=$row['userid'];
$passwordhashed=password_hash($row['password'], PASSWORD_DEFAULT);
$sql = "UPDATE users
SET hashedpassword='$passwordhashed'
WHERE userid='$userid'
LIMIT 1";
$update = mysqli_query($connection, $sql);
if (!$update) {
die("Database query failed: " . mysqli_error($connection));
} else {
//we good
}
}
}
Почему это должно быть сразу? вы можете выполнять несколько обновлений отдельно, и я думаю, что он будет более эффективным. Есть ли какая-то причина, почему это должно быть сразу? –
Скорее всего, это всего лишь одно время, поэтому просто зацикливайте пользователей на свои пароли, хеш и все, затем создайте строку sql или файл, а затем просто выполните его в терминале – Ghost
его одноразовое задание, каково его значение долго это займет –