Файл: upload/pages/auth/recovery/check_recovery_code.php
Строк: 57
<?php
require_once ($_SERVER['DOCUMENT_ROOT'] . '/core/core.php');
if (isset($user['id'])) {
RedirectToPage('/');
exit();
}
if ($_SERVER["REQUEST_METHOD"] === "POST") {
$codeArray = $_POST['code'];
$recoveryCode = implode('', $codeArray);
// Проверяем наличие подходящего кода в таблице восстановления
$result = dbquery("SELECT email FROM recover_user WHERE code = ?", [$recoveryCode]);
if (DataNumRows($result)) {
session_regenerate_id(); // обновление сессии для повышения безопасности
$_SESSION['verified_email'] = DataResult($result, 0, 'email');
header('Location: ' . homeLink() . '/change-recover-pass'); // переадресация на страницу изменения пароля
exit;
} else {
showAlert('Ошибка', 'fail', 'Неправильный код восстановления. Попробуйте снова');
ReloadPage();
}
}
$page_html = $view->render('pages/auth/recovery/code.html', [
'home' => homeLink(),
'templ_home' => TemplateLink($theme)
]);
require_once ($_SERVER['DOCUMENT_ROOT'] . '/layout.php');
?>
<script>
// Список всех элементов ввода
const inputs = document.querySelectorAll('.code-box input');
// Устанавливаем обработчик событий для каждой ячейки
inputs.forEach((input, idx) => {
input.addEventListener('input', function(event) {
// Авто-переход к следующему полю после заполнения текущей ячейки
if (this.value.length >= this.maxLength && idx < inputs.length - 1) {
inputs[idx + 1].focus();
}
});
// Обработка удаления символов
input.addEventListener('keyup', function(event) {
if (event.key === 'Backspace' && this.value === '' && idx > 0) {
inputs[idx - 1].focus();
}
});
// Добавляем обработку вставки
input.addEventListener('paste', function(event) {
event.preventDefault(); // Отменяем стандартную вставку
const pastedData = event.clipboardData.getData('Text'); // Получаем содержимое буфера обмена
let charIndex = 0;
// Заполняем ячейки последовательно значениями из буфера
inputs.forEach((el, i) => {
if (charIndex < pastedData.length) {
el.value = pastedData[charIndex++];
if (i < inputs.length - 1) {
el.focus(); // Перемещаем фокус дальше
}
}
});
});
});
// Автоматика установки фокуса на первую ячейку
window.onload = () => inputs[0].focus();
</script>