所以,我正在努力从数据库中获取付款日期,然后在其到期日添加一年。我希望用户在登录时知道他们是处于活动状态还是非活动状态。
但是,每次我与付款尚未过期的人登录时,我都会收到您的非活动会员消息。有人可以看一看,看看我哪里错了吗?
$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>");
}
答案 0 :(得分: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>";
}
?>