Как сохранить историю предыдущих логинов пользователя в бд

Нужен дописать 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 шт):

Автор решения: Константин Бронштейн
  1. Вам нужно создать колонку в таблице users с именем last_login, например.
  2. Далее, там где обновляете 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));
→ Ссылка