Удалить пользователя из базы данных, если адрес электронной почты не подтвержден - PullRequest
1 голос
/ 29 января 2012

В настоящее время я работаю на веб-сайте, основанном на регистрации, и у меня есть сервер, отправляющий пользователю электронное письмо с кодом активации при регистрации. Все это делается в PHP, поэтому, как вы можете себе представить, я использую функцию mail ().

Все нормально, как только пользователь получает электронное письмо и щелкает ссылку активации, для поля «active» в таблице «Users» устанавливается значение true. Но вот проблема в том случае, если пользователь не подтверждает свой адрес электронной почты, что мне делать?

Я думал о том, чтобы хранить такие детали, как дата и время регистрации пользователя, но я не знаю, как поступить с этими данными. Как сделать так, чтобы сервер автоматически удалял пользователя из базы данных через заданный промежуток времени?

Это то, что я должен спросить, но, честно говоря, я не знаю обычный протокол ...

Вывод: поскольку Cron предназначен для серверов на базе Unix, мне пришлось его пропустить, но мне было очень интересно, что я могу просто использовать планировщик заданий Windows, встроенный в Windows. По крайней мере, это означает, что я могу проверить его на своем компьютере перед любым хостингом сервера. Спасибо всем

Ответы [ 4 ]

5 голосов
/ 29 января 2012

Вы должны обязательно сохранить дату и время отправки ссылки активации.

На самом деле нет способа заставить сервер автоматически удалять устаревшие пользовательские данные, но это достаточно просто сделать самостоятельно.Предполагая, что у вас есть доступ к cron на вашем сервере, вы можете настроить запуск cronjob (например) каждую ночь в 2 часа ночи и выполнить скрипт PHP, который ищет в базе данных пользователей, которым была отправлена ​​ссылка более X дней назад, но они не были подтвержденыон

3 голосов
/ 29 января 2012

Я думаю, что решение будет хранить метку времени при отправке почты. теперь запускайте cron каждые 15 минут, чтобы проверить, какие значения имеют временную метку более 24 часов или любой желаемый лимит времени, а затем удалите его из db

2 голосов
/ 29 января 2012

Просто вызовите в своем файле index.php следующий код. (Почему index.php? - потому что он запрашивается каждый раз и может «действовать» как cronjob.)

(Просто псевдокод - возможно, понадобятся некоторые настройки!) mysql_query ("УДАЛИТЬ ИЗ ПОЛЬЗОВАТЕЛЯ, ГДЕ active = 'false' И registerTime <(NOW-60 * 60 * 24 * 7)") </p>

Это удалит всех пользователей, которые не были активированы в течение 7 дней.

Это просто концептуальная идея, которую, я думаю, вы можете построить.

1 голос
/ 29 января 2012

Вы должны посмотреть на cronjobs , которые вы запускаете ежедневно.Просто укажите в поле вашей базы данных время регистрации вашего пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...