PHP MySQL 在一定时间后停用高级成员(member)资格?

标签 php mysql time countdown

我最近刚刚研究出如何使用 PayPal IPN 在用户支付一定金额后启动高级成员(member)资格。一旦用户点击升级帐户,他们就会被定向到 PayPal 进行支付,然后 IPN 就会启动更新数据库以显示用户是高级用户。我希望在他们的帐户恢复正常之前能持续一段时间,但不知道该怎么做?例如,他们升级,2年后,触发MySQL更新,使他们的账户恢复到平均水平。这是我正在使用的 IPN 脚本:

<?php 
include 'core/init.php';

//DONT CHANGE THESE VARIABLES
$payment_status = $_POST['payment_status'];
$payment_amount = $_POST['mc_gross'];
$payment_currency = $_POST['mc_currency'];
$receiver_email = $_POST['receiver_email'];
$username = $_POST['custom'];


if($payment_status =="Completed")
{
$purchase_check = mysql_query("SELECT premium FROM users WHERE username='$username'");
while($row = mysql_fetch_assoc($purchase_check))
{
    $paid = $row['premium'];
}
if($paid=="0")
{
    if($receiver_email=="aidan6141@hotmail.co.uk")
    {
        if($payment_amount=="6.99" && $payment_currency=="GBP")
        {
            $update_premium = mysql_query("UPDATE users SET premium='1' WHERE username='$username'");
        }
    }
}
}
else
{
echo "Access Denied!";  
}

?>

我正在考虑使用我的 PHP 基本思想,我可以将“upgrade_date”值作为时间戳添加到数据库中,然后添加到我的代码中:

mysql_query("UPDATE users SET upgrade_date=CURDATE() WHERE username='$username'"); 

因此,更新升级日期应该不是问题,问题是我如何记忆起该信息,以便在时间戳后的 2 年内将它们发回给普通成员(member)?我还希望显示一个倒计时日期或其他东西,以便他们知道他们的帐户还剩多久?

如有任何帮助,我们将不胜感激,谢谢!

最佳答案

为什么不使用unix时间戳而是使用数据库中的 bool 值?

您可以直接说数据库中的premium字段将保存高级成员(member)资格的过期时间

然后您可以检查当前时间戳是否大于 premium 字段中保存的值,则它已过期...如果为 Null > 或 0 他从来没有成为过高级成员(member),如果它小于保存的值,那么他的成员(member)资格是有效的,然后您可以计算当前时间戳和保存的时间戳之间的差异,看看它还有多长时间过期。

关于PHP MySQL 在一定时间后停用高级成员(member)资格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22301594/

相关文章:

python - 时间序列 : How can I adjust pd. date_range(freq ='B' ),包括星期六。 (Python)

php - 检查字符串是否在 PHP 中序列化

mysql - 从两个表中按日期时间字段获取最新数据

mysql - Django DatetimeField 在更新时发生更改,值不正确

mysql - SQL:返回具有给定项目值子集的项目的查询

ruby - Ruby 中的 Time.now 与 Time.new

php - 将脚本从 C 迁移到 PHP

php - 如何在 SQL 中将值显示为 Y 或 N?

javascript - 单击按钮后向文本区域添加时间

objective-c - 使用 NSTimer 的秒表错误地在显示中包含暂停时间