Как добавить пользователя в базу данных после подтверждения по электронной почте?
У меня есть сайт, построенный с использованием PHP Codeigniter. Имеет систему управления пользователями. Как правило, когда пользователь регистрируется, он добавляет свою информацию в базу данных и отправляет электронное письмо с подтверждением (как и в других системах).
Но сейчас некоторые спамеры создают много аккаунтов. Они не проверяют электронную почту, хотя. Просто добавьте больше записей в базу данных. Тем не менее, моя база данных становится тяжелой для этого. Как я могу предотвратить это?
Есть ли рабочий процесс, с помощью которого я могу добавить пользователя после его подтверждения по электронной почте?
Заранее спасибо.
4 ответа
- Вы можете добавить капчу или безопасность, как, например, в комментариях.
- Вы также можете с помощью codeigniter легко получить пользователь ip с помощью функции ip_adress и ограничить создание учетной записи с помощью ip.
- Установите функцию cron для отключения неактивированных учетных записей каждый день / неделю, чтобы облегчить вашу базу данных бесполезной учетной записью...
- Используйте Analitics и посмотрите, откуда спам, и внесите в черный список соответствующие страны.
Существует много решений, но ни одно из них не является идеальным или 100% эффективным: /
Невозможно вставить пользователя после успешного подтверждения по электронной почте, вы можете выполнить некоторые шаги, чтобы ограничить пользователей
- создайте капчу в вашей регистрационной форме
- создайте новую таблицу, т. е. схему вашей регистрационной таблицы, чтобы пользовательский реестр перешел к этой новой таблице, затем, если пользователь подтвердил полученную почту, запись переместится в исходную регистрационную таблицу и будет удалена из новой.
- блокировать пользователя одним пользователем один ip не является хорошим решением, поэтому не ограничивайте его
- просто запускайте задание cron каждые 3 дня для новой схемы таблицы, чтобы пользователи, которые не подтверждают свою почту, просто удаляли все записи из новой таблицы каждые три дня каждую неделю. Вот и все, спасибо.
Подготовленные операторы PDO проверяют функцию
$result = Database::getInstance()->query("SELECT * FROM user ORDER BY id DESC WHERE 1");
это должно дать вам последнюю запись в базе данных, теперь вы должны прочитать статус проверки и удалить непроверенного пользователя или добавить проверенного пользователя
в вашем классе Database вы должны иметь функцию, которая строит ваш SQL-запрос и создает массив со значениями, которые вы хотите ввести
public function query($query, array $parameters = array())
{
$statement = $this->connection->prepare($query);
foreach($parameters as $key => $value)
{
$statement->bindValue(':'.$key, $value);
}
$statement->execute();
return $statement->fetchAll(PDO::FETCH_ASSOC);
}
- Лучшее решение - использовать Google reCaptcha
- Использовать проверку для подтверждения правильности адреса электронной почты