Как добавить пользователя в базу данных после подтверждения по электронной почте?

У меня есть сайт, построенный с использованием PHP Codeigniter. Имеет систему управления пользователями. Как правило, когда пользователь регистрируется, он добавляет свою информацию в базу данных и отправляет электронное письмо с подтверждением (как и в других системах).

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

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

Заранее спасибо.

1

Решение

  • Вы можете добавить капчу или безопасность, как, например, в комментариях.
  • Вы также можете с помощью codeigniter легко получить пользовательский IP с помощью функции
    IP адрес и ограничить создание учетной записи по IP.
  • Установите функцию cron для отключения неактивированных учетных записей каждый день / неделю, чтобы облегчить вашу базу данных бесполезной учетной записью …
  • Используйте Analitics и посмотрите, откуда спам, и занесите в черный список соответствующие страны.

Существует много решений, но ни одно из них не является идеальным или 100% эффективным: /

3

Другие решения

невозможно вставить пользователя после успешного подтверждения по электронной почте, вы можете выполнить некоторые шаги, чтобы ограничить пользователей

  1. создайте капчу в вашей регистрационной форме
  2. создайте новую таблицу, т. е. схему вашей регистрационной таблицы, чтобы пользовательский реестр перешел к этой новой таблице, затем, если пользователь подтвердил полученную почту, запись переместится в исходную регистрационную таблицу и удалит из новой.
  3. блокировать пользователя одним пользователем один ip не является хорошим решением, поэтому не ограничивайте его
  4. просто запускайте задание cron каждые 3 дня для новой схемы таблицы, чтобы пользователи, которые не подтверждают свою почту, просто удаляли все записи из новой таблицы каждые три дня каждую неделю. Вот и все, спасибо.
2

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);
}
1

  • Лучшее решение — использовать Google reCaptcha
  • Использовать проверку для подтверждения адреса электронной почты
0
По вопросам рекламы [email protected]