0

因此,我正在努力从数据库中获取付款日期,然后在其上添加一年作为到期日。我希望用户在登录时知道他们是活跃的还是不活跃的。

但是,每次我使用付款尚未过期的人登录时,我都会收到您是非活动会员的消息。有人可以看看我哪里出错了吗?

$paymentdate = strtotime($row[1]);
$paymentexpire = strtotime("+1 year", $paymentdate);
$currentdate = date('Y-m-d');
if($paymentdate != null && $paymentdate <= $currentdate && $currentdate < $paymentexpire){
    $msg = $p->addContent("You are an active member<br>");
}
else{
    $msg = $p->addContent("You are an inactive member<br>");
}
4

1 回答 1

1

有关 PHP 小提琴示例,请参阅http://phpfiddle.org/main/code/ips-jgh

这是一个简化的版本,并且更有意义。如果会员资格的到期日期大于/等于当前时间,则会员资格尚未用完 - 有效。

$paymentdate = strtotime($row[1]);
$paymentexpire = strtotime("+1 year", $paymentdate);

if($paymentdate != null && $paymentexpire >= time()){
    $msg = $p->addContent("You are an active member<br>");
}
else {
    $msg = $p->addContent("You are an inactive member<br>");
}

您可以将日期转换简化为:

$paymentexpire = strtotime("+1 year", strtotime($row[1]));

您修改了答案,以字符串格式包含当前时间。上面的代码仅使用易于理解和比较的 unix 时间戳。

我已经修改了您的示例代码,它在我的机器上运行良好。

<?php

$date = "2012-10-10"; // member is active

$paymentdate = strtotime($date);
$paymentexpire = strtotime("+1 year", $paymentdate);

if($paymentdate != null && $paymentexpire >= time()){
   echo "You are an active member<br>";
}
else {
   echo "You are an inactive member<br>";
}

?>
于 2013-09-09T23:03:06.887 回答