电子邮件确认后如何将用户添加到数据库?

How to add user to database after email confirmation?

我有一个使用 PHP Codeigniter 框架构建的网站。它有一个用户管理系统。通常,它所做的是,当用户注册时,它将他的信息添加到数据库并发送确认电子邮件(与其他系统一样)。

但现在一些垃圾邮件发送者正在创建大量帐户。他们虽然不验证电子邮件。只需向数据库中添加更多记录。但是,我的数据库为此变得沉重。我该如何防止这种情况?

是否有任何工作流程可以让我在他的电子邮件确认后添加用户?

提前致谢。

  • 您可以按照评论中的说明添加一些验证码或安全性。
  • 您还可以使用 codeigniter,通过函数轻松获取用户 ip ip_adress并通过ip限制创建账号
  • 设置一个 cron 函数来禁用停用的帐户everyday/week 以减轻您数据库中无用帐户的负担...
  • 使用 Analitics 查看垃圾邮件的来源,并将相关国家/地区列入黑名单。

有很多解决方案,但其中 none 是完美的或 100% 有效的:/

确认邮件成功后无法插入用户您可以按照一些步骤限制用户

  1. 在您的注册表中创建一个验证码
  2. 制作一个新的 table 即您的注册蓝图 table 这样用户注册就可以转到这个新的 table 然后如果用户确认那里有邮件然后记录移动到原始注册table并从新的删除
  3. 一个用户一个ip屏蔽用户不是一个好办法所以不要限制他们
  4. 只是 运行 在 table 的新蓝图上每 3 天执行一次 cron 作业,因此未确认邮件的用户只需删除新 table 中的所有条目] 每周每三天。就这样谢谢。

PDO 准备好的陈述 验证函数

$result = Database::getInstance()->query("SELECT * FROM user ORDER BY id DESC WHERE 1");

这应该会为您提供最后一个数据库条目 现在你应该读出验证状态并删除未验证的用户或添加已验证的用户

在您的数据库 class 中,您应该有一个函数来构建您的 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
  • 使用检查 E-Mail 地址合法验证