如何处理未激活的数据库记录或如何防止它

时间:2014-06-26 14:23:47

标签: mysql web

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

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

如果记录未激活,则电子邮件无法使用,并且始终在我们的表格中

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

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

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

或者只是这样离开?但存储它是浪费

或者更好的解决办法吗?

3 个答案:

答案 0 :(得分:1)

我曾经这样做过:

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

由于这个原因,您可以在主帐户表中节省一些空间,还可以添加一个将删除旧临时帐户的任务(例如,每周)。

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

答案 1 :(得分:0)

简而言之:

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

为激活码创建一个表格:

user_id, activation_code, created_at, valid_to

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

当用户激活其帐户时,请删除激活码并为用户更新is_activated1

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

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

答案 2 :(得分:0)

保持标志代表真或假,而不是存储链接。如果帐户被激活,请将其设为真。