Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将用户帐户设置为在给定时间后过期_Php_Mysql_Sql - Fatal编程技术网

Php 将用户帐户设置为在给定时间后过期

Php 将用户帐户设置为在给定时间后过期,php,mysql,sql,Php,Mysql,Sql,数据库中的users表具有以下字段(除其他字段外): 创建日期(用户加入的日期) 已确认(如果用户已确认其电子邮件,则设置为1) 已批准(如果用户已被管理员批准,则设置为1) 我想做的是创建另一行,称为“period”,它将更新为 1如果用户想要加入1个月, 2如果他想加入6个月,以及 3如果他想加入一年 我想知道是否有可能在所选期限到期后自动将approved从1设置为0。 我只是想问一些想法。。。我希望在阅读了您的意见后,我能针对我的具体情况提出最好的解决方案 您将如何处理此类问题?最好

数据库中的users表具有以下字段(除其他字段外):

  • 创建日期(用户加入的日期)
  • 已确认(如果用户已确认其电子邮件,则设置为1)
  • 已批准(如果用户已被管理员批准,则设置为1)
我想做的是创建另一行,称为“period”,它将更新为 1如果用户想要加入1个月, 2如果他想加入6个月,以及 3如果他想加入一年

我想知道是否有可能在所选期限到期后自动将approved从1设置为0。 我只是想问一些想法。。。我希望在阅读了您的意见后,我能针对我的具体情况提出最好的解决方案


您将如何处理此类问题?

最好的方法是查看。您可以将订阅的当前时间与结束时间进行比较:

create view v_users as
    select u.*,
           (now() < (datecreated + interval (case when period = 1 then 1
                                                  when period = 2 then 6
                                                  when period = 3 then 12
                                              end) month
                    )
           ) as approved
    from users u;
将视图v_用户创建为
选择u.*,
(现在()<(datecreated+interval)(句点为1时为1
当周期=2时,则为6
当周期=3时,则为12
月底
)
)经批准
来自用户u;

我将建议以下方法-

  • 您不应添加新行,而应添加另一列,例如类型为enum的订阅类型,值为0-有效期为0天,1-有效期为1个月,2-有效期为6个月,3-有效期为1年

  • 您可以有一个cron作业,它可以检查过期时间并处理这些内容


  • 设置过期日期,不要让用户在过期日期登录。很简单。我喜欢这种方法,因为您最终会得到历史订阅信息,并且可以轻松撤销订阅。