PHP MySQL在一定时间后停用高级会员资格?
我最近刚刚研究出如何使用PayPal IPN在用户支付一定金额时启动高级会员资格。一旦用户单击升级帐户,他们将被定向到PayPal进行支付,然后IPN开始更新数据库以显示用户是高级用户。我希望在他们的帐户恢复正常之前,这会持续一段时间,但不知道如何做到这一点?例如,他们升级,2年后,会触发MySQL更新,使他们的帐户恢复到平均水平。以下是我正在使用的IPN脚本:PHP MySQL在一定时间后停用高级会员资格?,php,mysql,time,countdown,Php,Mysql,Time,Countdown,我最近刚刚研究出如何使用PayPal IPN在用户支付一定金额时启动高级会员资格。一旦用户单击升级帐户,他们将被定向到PayPal进行支付,然后IPN开始更新数据库以显示用户是高级用户。我希望在他们的帐户恢复正常之前,这会持续一段时间,但不知道如何做到这一点?例如,他们升级,2年后,会触发MySQL更新,使他们的帐户恢复到平均水平。以下是我正在使用的IPN脚本: <?php include 'core/init.php'; //DONT CHANGE THESE VARIABLES $
<?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!";
}
?>
所以更新他们升级的日期不应该是个问题,问题是我怎样才能回忆起这些信息,所以在时间戳之后的2年内,他们会被发回给普通会员?我也希望能显示一个倒计时日期或其他什么,这样他们就知道他们的帐户还剩多长时间了
任何帮助都将不胜感激,谢谢 为什么不在数据库中添加
upgraded = tinyint: to store a 0 for not upgraded and a 1 for upgraded
upgraded_date = datetime: to store the date this was done
然后设置一个cron作业来运行(可能一天几次,或者在用户登录时检查),以检查时间是否已过期,如果它已将“升级”重置为0,为什么不使用unix时间戳而不是在数据库中使用布尔值 您可以说,数据库中的
premium
字段将保存premium成员资格的过期时间
然后,您可以进行检查,查看当前时间戳是否大于字段
premium
中保存的值,然后它就过期了。。。如果它是Null
或0
他从来都不是特级的,如果它小于保存的值,那么他的成员资格是有效的,然后你可以计算当前时间戳和保存的时间戳之间的差异,看看它还有多长时间过期。你可能需要一个其他条件来检查年份
就像这样:
while($row = mysql_fetch_assoc($purchase_check))
{
$paid = $row['premium'];
$timestamp_start = $row['upgrade_date'];
$timestamp_end = date("Y/m/d");
$difference = abs($timestamp_end - $timestamp_start);
$years = floor($difference / (365*60*60*24));
}
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 if($years == 2){ do update here and set premium to 0}
else{do what you like here}
}
else
{
echo "Access Denied!";
}
while($row = mysql_fetch_assoc($purchase_check))
{
$paid = $row['premium'];
$timestamp_start = $row['upgrade_date'];
$timestamp_end = date("Y/m/d");
$difference = abs($timestamp_end - $timestamp_start);
$years = floor($difference / (365*60*60*24));
}
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 if($years == 2){ do update here and set premium to 0}
else{do what you like here}
}
else
{
echo "Access Denied!";
}