Как сохранить историю предыдущих логинов пользователя в бд
Нужен дописать php скрипт который сохраняет предыдущие логины пользователя, в бд к примеру вот скрипт который с проверками и где можно тут вставить так чтобы при вводе логина пользователю, его старый писался в бд
if (isset($_POST['edit_user_login'])) {
$user_login = checkJs($_POST['user_login'],null);
if (empty($user_login)) {
exit('<span class="m-icon icon-remove"></span> Вы не указали логин!');
}
$U = new Users($pdo);
if(!$U->check_login_length($user_login)) {
exit('<span class="m-icon icon-remove"></span> Логин должен состоять не менее чем из 3 символов и не более чем из 30.');
}
if(!$U->check_login_composition($user_login)) {
exit('<span class="m-icon icon-remove"></span> В логине разрешается использовать только буквы и цифры.');
}
if(!$U->check_login_busyness($user_login, $_SESSION['id'])) {
exit('<span class="m-icon icon-remove"></span> Введеный Вами логин уже зарегистрирован!');
}
if ($host == 'demo.gamecms.ru' and $_SESSION['id'] == '2') {
exit('<span class="m-icon icon-remove"></span> Менять логин на данном аккаунте запрещено!');
}
$STH = $pdo->query("SELECT `col_login` FROM `config__secondary` LIMIT 1"); $STH->setFetchMode(PDO::FETCH_OBJ);
$conf2 = $STH->fetch();
$date = time() - 24*60*60*$conf2->col_login;
$pdo->exec("DELETE FROM `last_actions` WHERE `date`<'$date' and `user_id`='$_SESSION[id]' and `action_type` = '3' LIMIT 1");
$STH = $pdo->query("SELECT `id`, `date` FROM `last_actions` WHERE `user_id` = '$_SESSION[id]' and `action_type` = '3'"); $STH->setFetchMode(PDO::FETCH_OBJ);
$row = $STH->fetch();
if (!empty($row->id)) {
$delta = time() - $row->date;
if ($delta < (24*60*60*$conf2->col_login)) {
exit('<span class="m-icon icon-remove"></span> Логин можно менять раз в '.$conf2->col_login.' сут.');
}
}
$STH = $pdo->prepare("UPDATE `users` SET `login`=:user_login WHERE `id`='$_SESSION[id]' LIMIT 1");
$STH->execute(array(':user_login' => $user_login));
$STH = $pdo->prepare("INSERT INTO `last_actions` (`user_id`,`action_type`,`date`) values (:user_id, :action_type, :date)");
$STH->execute(array( 'user_id' => $_SESSION['id'], 'action_type' => '3', 'date' => time() ));
$_SESSION['login'] = $user_login;
write_log("Логин изменен на ".$user_login);
exit('<span class="m-icon icon-ok"></span> Ваш логин изменен!');
}
Ответы (1 шт):
Автор решения: Константин Бронштейн
→ Ссылка
- Вам нужно создать колонку в таблице
usersс именем last_login, например. - Далее, там где обновляете
usersнужно сделать запись предыдущего логина в эту колонку
Например вот так:
$STH = $pdo->prepare("UPDATE `users` SET `login`=:user_login, `last_login`=:user_last_login WHERE
`id`='$_SESSION[id]' LIMIT 1");
$STH->execute(array(':user_login' => $user_login));