我正在一个网站上工作,用户必须支付少量费用才能创建一个帐户,拥有一个帐户可以让他们在一定时间内访问网站的所有功能,比如说 6 个月。
现在,我正在使用 php 创建用户帐户,使用 mysql 数据库来存储用户帐户信息,并且用户可以自由地免费登录/退出,时间不受限制。
我的问题是,我将如何为创建的每个帐户设置时间限制,一旦过期,让用户可以选择重新更新他们的会员资格?
我正在一个网站上工作,用户必须支付少量费用才能创建一个帐户,拥有一个帐户可以让他们在一定时间内访问网站的所有功能,比如说 6 个月。
现在,我正在使用 php 创建用户帐户,使用 mysql 数据库来存储用户帐户信息,并且用户可以自由地免费登录/退出,时间不受限制。
我的问题是,我将如何为创建的每个帐户设置时间限制,一旦过期,让用户可以选择重新更新他们的会员资格?
为什么不简单地在用户表中添加一个过期列并在允许登录之前将其与当前日期进行比较 - 如果此日期已过期,只需重定向到付款页面以更新会员资格?
您还可以使用此日期显示活跃会员的“剩余天数”,并在最近几天左右开始显示付款链接。
我一直使用 DATETIME 作为列类型来存储日期信息。
查看http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html上的 MySQL 日期和时间函数例如:以下查询选择具有 date_col 值的所有行过去 30 天内:
SELECT something FROM tbl_name
-> WHERE DATE_SUB(CURDATE(),INTERVAL 30 DAY) <= date_col;
在您的情况下,您需要以下查询来使会员资格无效 -
$sql = SELECT * FROM users WHERE
DATEDIFF(expiration_date, CURDATE()) days_left
HAVING days_left < 0
while($row=.....) {
//Update query to set user_status='expired' or whatever
}
如果你使用 MySQL 就很简单了。只需在注册表中添加一列,其中包含用户的到期日期。
像这样:
| id | username | expiration_date |
| 1 | test | 1029384756 |
然后,您需要做的就是检查相关用户的 time()(今天)是否 >= expiration_date。如果有,那就过期了。
我使用时间戳格式作为到期日期,但您可以使用其他格式...
添加一个额外的列 ex。expiry_time
连同用户信息,然后在最初注册时设置它的值。
该帐户将在current time >= Expiry_time
. 并且当用户想要重新新成员时,再次重新设置expiry_time
' 值。
将帐户创建日期与用户名一起存储在 MySQL 数据库中。在登录时检查它,并在 6 个月后过期。过期后,将用户重定向到“更新您的会员资格”页面。