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

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

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

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

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

4 ответа

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

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

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

  1. создайте капчу в вашей регистрационной форме
  2. создайте новую таблицу, т. е. схему вашей регистрационной таблицы, чтобы пользовательский реестр перешел к этой новой таблице, затем, если пользователь подтвердил полученную почту, запись переместится в исходную регистрационную таблицу и будет удалена из новой.
  3. блокировать пользователя одним пользователем один ip не является хорошим решением, поэтому не ограничивайте его
  4. просто запускайте задание 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
  • Использовать проверку для подтверждения правильности адреса электронной почты
Другие вопросы по тегам