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

Php 如何在电子邮件确认后将用户添加到数据库?,php,database,codeigniter,security,user-management,Php,Database,Codeigniter,Security,User Management,我有一个用PHP Codeigniter框架构建的网站。它有一个用户管理系统。一般来说,它所做的是,当用户注册时,它将他的信息添加到数据库中,并像其他系统一样发送确认电子邮件 但现在一些垃圾邮件发送者正在创建大量帐户。但是他们没有验证电子邮件。只需向数据库添加更多记录。然而,我的数据库为此变得越来越重。我怎样才能防止这种情况 是否有任何工作流可供我在用户的电子邮件确认后添加用户 提前谢谢 您可以添加一些验证码或安全性,如在评论中所说。 您还可以使用codeigniter,通过该功能轻松获得用户i

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

但现在一些垃圾邮件发送者正在创建大量帐户。但是他们没有验证电子邮件。只需向数据库添加更多记录。然而,我的数据库为此变得越来越重。我怎样才能防止这种情况

是否有任何工作流可供我在用户的电子邮件确认后添加用户

提前谢谢

您可以添加一些验证码或安全性,如在评论中所说。 您还可以使用codeigniter,通过该功能轻松获得用户ip 并限制通过ip创建帐户。 设置一个cron函数,每天/每周禁用未激活的帐户,以减少数据库中无用帐户的数量。。。 使用分析软件查看垃圾邮件的来源,并将相关国家列入黑名单。 有很多解决方案,但没有一个是完美的或100%有效的:/

您可以添加一些验证码或安全性,如在评论中所说。 您还可以使用codeigniter,通过该功能轻松获得用户ip 并限制通过ip创建帐户。 设置一个cron函数,每天/每周禁用未激活的帐户,以减少数据库中无用帐户的数量。。。 使用分析软件查看垃圾邮件的来源,并将相关国家列入黑名单。
有很多解决方案,但没有一个是完美的或100%有效的:/

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

在注册表中创建验证码 创建一个新表,即注册表的蓝图,以便用户注册到该新表,然后如果用户确认存在邮件,则记录移动到原始注册表并从新表中删除 用一个用户一个ip阻塞用户不是一个好的解决方案,所以不要限制它们 只要在表的新蓝图上每3天运行一次cron作业,那么没有确认邮件的用户只需在每周的每3天从新表中删除所有条目。就这样,谢谢。
成功发送确认邮件后无法插入用户。您可以按照以下步骤限制用户

在注册表中创建验证码 创建一个新表,即注册表的蓝图,以便用户注册到该新表,然后如果用户确认存在邮件,则记录移动到原始注册表并从新表中删除 用一个用户一个ip阻塞用户不是一个好的解决方案,所以不要限制它们 只要在表的新蓝图上每3天运行一次cron作业,那么没有确认邮件的用户只需在每周的每3天从新表中删除所有条目。就这样,谢谢。 PDO 准备好的发言 验证函数

$result = Database::getInstance()->query("SELECT * FROM user ORDER BY id DESC WHERE 1");
这将获得最后一个数据库条目 现在,您应该读取验证状态并删除未验证的用户或添加已验证的用户

在数据库类中,应该有一个functin,用于构建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);
}
PDO 准备好的发言 验证函数

$result = Database::getInstance()->query("SELECT * FROM user ORDER BY id DESC WHERE 1");
这将获得最后一个数据库条目 现在,您应该读取验证状态并删除未验证的用户或添加已验证的用户

在数据库类中,应该有一个functin,用于构建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);
}
最好的解决办法是使用 使用检查进行电子邮件地址合法验证 最好的解决办法是使用 使用检查进行电子邮件地址合法验证
首先,您可以尝试在注册中添加验证码。然后,您应该尝试找出这些攻击的来源,并尝试阻止注册到一组具有某些.htaccess的IP。我们遇到了类似的问题,并以这种方式阻止了它。首先,您可以尝试在注册中添加验证码。然后,您应该尝试找出这些攻击的来源,并尝试阻止注册到一组具有某些.htaccess的IP。我们也遇到过类似的问题,并以这种方式阻止了它。汉斯,你的代表率很低,所以我不会投你反对票。但首先,你发布的代码与CI毫无关联,其次,这个答案并没有真正解决用户的问题。汉斯,你的代表率很低,所以我不会投你反对票。但首先,你发布的代码与CI毫无关联,其次,这个答案并没有真正解决用户的问题。你称google reCaptcha是最好的解决方案。。。但这并不比一个不那么糟糕的解决方案好。reCaptcha是最常见的图灵测试之一,也是最常见的黑帽挑战。安全吗?我不这么认为。。。在以牺牲用户体验为代价使用图灵测试之前,有许多后端解决方案。您称谷歌reCaptcha为最佳解决方案。。。但这并不比一个不那么糟糕的解决方案好。reCaptcha是一个o f最常见的图灵测试和最常见的黑帽挑战。安全吗?我不这么认为。。。在以牺牲用户体验为代价使用图灵测试之前,有许多后端解决方案。