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中的用户注册:如何删除未完成激活的用户[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

ThinkPHP 3.2 用户注册邮箱验证激活帐号

如何对未登录的用户隐藏 php 功能

邮箱怎么激活

PHP:如果用户未按下提交按钮,Mysql 回滚多个查询(通过 ajax 完成)

CSRF 令牌未激活

Non-Consumable 使用免费试用,如何知道用户是不是删除应用程序并安装同时 ree 试用未完成