php用户注册:如何删除未完成激活的用户

Users registration in php: how to delete users that have not completed activation

我准备在php中写用户注册,不想用任何框架。通常它看起来像这样:

  1. 用户填写注册表。
  2. 我的应用向用户的电子邮件地址发送电子邮件。
  3. 用户通过单击电子邮件中的 link 完成注册。

第一步,我将用户信息添加到一个特殊的数据库中 table,该数据库存储未激活的用户。 在第三步中,我将用户从 table 移动到激活用户的 table。

我有几个问题:

  1. 这个逻辑好吗?如果不是,通常的做法是什么?
  2. 如果您还没有通过激活,我如何以及何时可以从第一个 table 中删除用户?
  3. 是否有用于此目的的轻量级库(不是框架)?

谢谢!

  1. 通常这是两种方法之一。如果用户被激活,第一个是存储布尔值。第二个是你的方式。第二个的优点是将它们分开以便更好地管理这些用户。
  2. 您可以直接从 table 中删除它们。时间取决于您的项目需要什么,但相对较好的价值是一天
  3. 我认为没有任何特定于仅注册部分的库。但是有很多成熟的安全库包含了这个

希望这能回答您的问题

不需要使用php会话机制从数据库中删除数据,"as you said in comment"

您可以随时删除数据。可能在 24 小时或 7 天或 1 个月内。可能这取决于您将获得的流量。

但是一旦用户注册就将时间存储在 reg_time 列中。通过它在删除期间将与 reg_time 进行比较。

如果您想在 24 小时后删除,则

delete from ACCOUNT_TBL_DETAIL
where usrActivated=0 AND regTime <= UNIX_TIMESTAMP(DATE_SUB(now(), INTERVAL 1 DAY));

7 天后

delete from ACCOUNT_TBL_DETAIL
where usrActivated=0 AND regTime <= UNIX_TIMESTAMP(DATE_SUB(now(), INTERVAL 7 DAY));

安排SQL脚本

CREATE EVENT delete_event
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 DAY
ON COMPLETION PRESERVE

DO BEGIN
      DELETE messages WHERE date < DATE_SUB(NOW(), INTERVAL 7 DAY);
END;

这是一个简单的 cron 脚本