【问题标题】:how treat the database record that are not activated or how to prevent it如何处理未激活的数据库记录或如何防止它
【发布时间】:2014-08-17 10:59:06
【问题描述】:

我们有一个用户表来记录在我们网站上注册的所有用户, 但有些可能不会激活它

我们现在的做法是,一旦用户注册,我们的表中会存储一条记录,一旦用户点击激活链接,激活码将变为' '(空)

如果记录没有被激活,则邮件不能被使用,并且会一直在我们的表格中

user
id | email       | activation code
1  | abc@abc.com |asdasdasdadadsasda
2  | cde@abc.com |

对此的最佳做法或解决方案是什么?

创建一个新表来存储所有激活码,并且只有在激活后才插入用户表?

还是就这样放着?但是存放起来很浪费

或者有什么更好的解决方案?

【问题讨论】:

    标签: mysql web


    【解决方案1】:

    我以前是这样的:

    • 包含临时帐户的临时表(尚未激活)
    • 包含帐户的表格(已激活)

    因此,您可以在主帐户表中腾出一些空间,还可以添加一个任务(例如,每周)来删除旧的临时帐户。

    当用户激活他的帐户时,您将其数据从临时表移动到主表。

    【讨论】:

      【解决方案2】:

      简而言之的解决方案:

      User 表中添加一列:is_activated TINYINT(1)DEFAULT 0

      为激活码创建一个表:

      user_id, activation_code, created_at, valid_to
      

      当用户注册时,将激活码插入到新表中,然后将用户插入到带有is_activated = 0的用户表中。

      当用户激活其帐户时,删除激活码并将用户的is_activated 更新为1

      创建一个定期运行并检查无效(过期)激活码 (valid_to < NOW()) 的 cronjob。

      • 删除所有未激活且激活码已过期的用户。
      • 删除用户不存在的所有激活码

      【讨论】:

        【解决方案3】:

        而不是存储链接,保留一个标志代表真假。如果帐户被激活,则设为 true。

        【讨论】:

          猜你喜欢
          • 2022-08-17
          • 2020-07-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-09-17
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多