/
spirzen
/
it-code-examples
Обзор
Документация
Войти
/
spirzen
/
it-code-examples
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
examples/php/php-507-155-011/main.php
53 строки
2 KB
Spirzen
Code migration pack
09 июн 2026, 01:41
09 июн 2026, 01:41
cebc284
Код
Авторство
О чём код?
<?php require_once '../includes/db.php'; $token = $_GET['token'] ?? ''; if (!$token) { die("Недействительная ссылка"); } // Поиск токена $stmt = $pdo->prepare(" SELECT pr.user_id, pr.expires_at, u.email FROM password_resets pr JOIN users u ON pr.user_id = u.id WHERE pr.token = ? "); $stmt->execute([$token]); $record = $stmt->fetch(); if (!$record) { die("Ссылка недействительна или устарела"); } $expires = strtotime($record['expires_at']); if (time() > $expires) { die("Срок действия ссылки истёк"); } if ($_POST) { $password = $_POST['password'] ?? ''; if (strlen($password) < 8) { $error = "Пароль должен быть не короче 8 символов"; } else { $hash = password_hash($password, PASSWORD_ARGON2ID); $pdo->prepare("UPDATE users SET password_hash = ? WHERE id = ?") ->execute([$hash, $record['user_id']]); // Удаление использованного токена $pdo->prepare("DELETE FROM password_resets WHERE token = ?")->execute([$token]); echo "<p>Пароль успешно изменён. <a href='/auth/login.php'>Войти</a></p>"; exit; } } ?> <form method="post"> <h2>Новый пароль</h2> <?php if (!empty($error)): ?> <p style="color:red"><?= htmlspecialchars($error) ?></p> <?php endif; ?> <label>Пароль:<br><input type="password" name="password" required></label><br><br> <button>Сохранить</button> </form>