【问题标题】:PHP timestamp/membership system not expiring on the exact datePHP时间戳/会员系统未在确切日期到期
【发布时间】:2011-07-13 14:43:26
【问题描述】:

我在创建带有时间戳的小型会员系统时遇到了一些问题。当我在日期中显示时间戳时,它会告诉我有效会员资格何时到期。但是,在那个时间/日期,它不会过期,并且重置成员资格的脚本从 -NUMBERHERE 开始计数。

我不认为我做错了什么?我正在做(time() - $timestamp) 来解决它。这是我的脚本;

$membership = mysql_query("SELECT * FROM `members` WHERE `membership` > 0 AND `membertype` > 0") or die(mysql_error());
while($mm = mysql_fetch_array($membership)){

  if((time() - $mm["membership"]) > $mm["membertype"]){
     mysql_query("UPDATE `members` SET `membership` = 0, `membertype` = 0 WHERE `username` = '" . $mm[username] . "'");
  } else {
     echo (time() - $mm["membership"]);
  }

}  

$membership_date  = date("d-m-Y H:i:s", $user["membership"]);
echo "Your membership expiry date: $membership_date";

它确实会过期,但过期很晚。任何帮助都会很棒,谢谢。

P/S:membertype 变量是它到期前的秒数。

【问题讨论】:

  • 什么时候失败?你能举个例子吗?
  • pastebin.com/XsJrsKv0 当我刷新文件以更新它需要过期的确切时间戳时,它不会因为它也从 -NUMBEROFSECONDS 开始计数
  • 我不确定在不知道$mm['membership'] 实际包含的情况下是否可以诊断出这种情况。但是,我冒昧地认为应该在最初设置该变量时检查问题。
  • 时区问题?如果 PHP 和 MySQL 的 TZ 设置不同,那么您的时间戳将偏离 3600 秒的倍数。
  • Marc,PHP 创建了时间戳并将其插入 MySQL?所以我不知道..

标签: php system membership


【解决方案1】:

创建用户时:

$membership = time() + $membertype;

然后设置您的查询并执行。

检索用户时:

替换此行

if((time() - $mm["membership"]) > $mm["membertype"]){

用这个:

if( time() >= $user["membership"] )

【讨论】:

  • 我从来没想过,哈哈。我的大脑显然与其他人的想法不同。谢谢你,安迪。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-15
  • 2013-06-16
  • 2012-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多