php中的用户注册:如何删除未完成激活的用户[关闭]
Posted
技术标签:
【中文标题】php中的用户注册:如何删除未完成激活的用户[关闭]【英文标题】:Users registration in php: how to delete users that have not completed activation [closed] 【发布时间】:2015-12-13 12:52:49 【问题描述】:我打算用php编写用户注册,不想使用任何框架。通常它看起来像这样:
-
用户填写注册表。
我的应用程序向用户的电子邮件地址发送一封电子邮件。
用户通过单击电子邮件中的链接完成注册。
在第一步中,我将用户信息添加到存储非激活用户的特殊数据库表中。 在第三步中,我将该表中的用户移动到激活用户的表中。
我有几个问题:
-
这个逻辑好吗?如果不是,通常的做法是什么?
如果 hi 未通过激活,我如何以及何时可以从第一个表中删除用户?
是否有用于此目的的轻量级库(而非框架)?
谢谢!
【问题讨论】:
而不是为激活和非激活用户创建不同的表。只需创建一个列为activate
并将值保持为 Activated =1/true 和 NotActivated=0/false
用户只能通过点击邮件中给出的链接来激活他/她的帐户。激活后用户要求登录,登录后要求用户完成注册
您也可以添加到注册的第1步。使用户能够使用社交媒体帐户进行注册。
谢谢罗汉。我同意你的 cmets 但对我来说主要问题是问题 2)我应该为此目的使用 php 会话机制吗?
【参考方案1】:
不需要使用php会话机制从db中删除数据,“正如你在评论中所说的”
您可以随时删除数据。可能在 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 脚本
【讨论】:
我是 php 开发新手。哪个工具通常用于调度操作?是cron吗? 是的,在 php 中安排事情最常见的方法是 cron 作业【参考方案2】:-
通常这是两种方法之一。如果用户被激活,第一个是存储布尔值。第二个是你的方式。第二个的优点是将它们分开,以便更好地管理这些用户。
您可以从表中删除它们。时间取决于您的项目需要什么,但相对较好的价值是一天
我认为没有任何特定于仅注册部分的库。但是有很多成熟的安全库包含了这一点
希望这能回答你的问题
【讨论】:
我应该使用php会话来临时存储用户而不是使用db吗?这个想法在询问后立即出现在我身上) 否,因为会话与特定浏览器相关联。如果他们从另一个浏览器激活他们的帐户,那将无法正常工作以上是关于php中的用户注册:如何删除未完成激活的用户[关闭]的主要内容,如果未能解决你的问题,请参考以下文章