如果未确认电子邮件,则从数据库中删

时间:2012-01-28 22:23:55

标签: php sql database e-commerce

我目前正在开发基于注册的网站,我让服务器在注册时向用户发送激活电子邮件。这都是在PHP中完成的,因此,您可以想象,我正在使用mail()函数。

这一切都很好,一旦用户收到电子邮件并点击激活链接,“用户”表中的“活动”字段将设置为true。这是问题所在,如果用户没有确认他们的电子邮件地址,我该怎么办?

我想过要保留用户注册的日期和时间等详细信息,但我不知道如何处理这些数据。如何在一段时间后让服务器自动从数据库中删除用户?

这就是我认为我应该问的问题,但说实话,我不知道通常的协议......

结论:由于Cron是基于Unix的服务器,我不得不传递它,但我发现我可以使用Windows内置的Windows任务计划程序非常有趣。这至少意味着我可以在任何服务器托管之前在我的PC上测试它。谢谢大家

4 个答案:

答案 0 :(得分:5)

您绝对应该存储激活链接的发送日期和时间。

没有办法告诉服务器自动删除过时的用户数据,但是很容易自己编写代码。假设你可以在服务器上访问cron,你可以设置一个cronjob来运行(例如)每天凌晨2点运行,并执行一个PHP脚本,在数据库中搜索超过X天前发送链接但从未确认过的用户它

答案 1 :(得分:3)

我认为解决方案是在发送邮件时存储时间戳。 现在每15分钟运行一次cron,它会检查哪些值的时间戳超过24小时或者你想要的任何时间限制,然后从db中删除它

答案 2 :(得分:2)

只需在index.php文件中调用以下代码即可。 (为什么index.php? - 因为每次都要求它,并且可以“行动”为cronjob。)

(只是伪代码 - 可能需要一些调整!) mysql_query(“DELETE FROM user WHERE active ='false'AND registerTime<(NOW-60 * 60 * 24 * 7)”)

这将删除7天内未激活的所有用户。

这只是一个概念,我认为你可以继续发展。

答案 3 :(得分:1)

您应该查看每天运行的cronjobs。只需将用户注册的时间放入数据库中的字段即可。