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

时间:2018-02-16 08:06:34

标签: php database codeigniter security user-management

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

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

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

提前致谢。

4 个答案:

答案 0 :(得分:3)

  • 您可以在评论中添加一些验证码或安全性。
  • 您也可以使用codeigniter轻松获取用户ip的功能 ip_adress并通过ip限制帐户的创建。
  • 设置一个cron函数,每天/每周禁用未激活的帐户,以便用无用的帐户打开数据库...
  • 使用Analitics查看垃圾邮件的来源,并将相关国家列入黑名单。

有许多解决方案,但没有一个是完美的或100%有效的:/

答案 1 :(得分:2)

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

  1. 在您的注册表单中创建验证码
  2. 制作一张新表,即您的注册表的蓝图,以便用户注册转到此新表,然后如果用户确认有邮件,则记录移至原始注册表并从新注册表中删除
  3. 一个用户使用一个ip blok用户不是一个好的解决方案,所以不要限制它们
  4. 只需在表格的新蓝图上每3天运行一次cron作业,这样未确认邮件的用户只需每周三天从新表中删除所有条目。多数民众赞成。谢谢。

答案 2 :(得分:2)

PDO 准备好的陈述 验证功能

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

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

在您的数据库类中,您应该有一个功能,可以构建您的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);
}

答案 3 :(得分:0)

  • 最佳解决方案是使用Google reCaptcha
  • 使用检查电子邮件地址合法验证