В настоящее время я пытаюсь создать забытую систему паролей, где он отправляет пользователя и электронную почту с помощью токена сброса. Затем пользователь использует маркер сброса для сброса пароля. В действительности токен сброса будет истечен (во время тестирования я истекаю через 1 минуту после отправки электронной почты).MySQL, удаляющий истекшие значения
В моем забыли файл паролей PHP У меня есть это право перед отправкой электронной почты (обратите внимание, что $ маркер маркер, который был выдан):
$query2 = $con->prepare("UPDATE UserName SET resetkey = '$token', expire = NOW() + INTERVAL 1 MINUTE WHERE userName = :user");
$query2->bindParam(':user',$username);
$query2->execute();
Затем в моем файле паролей сброса PHP У меня есть это они сбрасывают свои пароли. Это в основном удаляет все истекшие значения, так что таблица не будет иметь просроченное значение:
$purge = $con->prepare("UPDATE UserName SET resetkey = NULL WHERE expires < NOW()");
$purge->execute();
Проблемы я бег в том, что пользователь все еще может восстановить свой пароль, даже если он входит маркер истек. Я убедился, что время правильное (и я даже ждал 5 минут, чтобы быть уверенным). Однако токен должен истечь через минуту. Может ли кто-нибудь объяснить мне, почему это происходит? Спасибо!
Вы также должны установить resetkey на null, где resetkey = '$ token'. Это отсутствует в вашем дизайне. Не забывайте, чтобы real_escape $ token предотвращал SQL-инъекцию. –
Похоже, вы только удаляете истекшие жетоны * после того, как * токен был проверен. Убедитесь, что вы выполните шаги в правильном порядке! – eggyal
@YusufMoola Что такое real_escape? Я слышал о SQL-инъекции, и я использую PDO-запросы. –