0

私のサイトでは、ユーザーが月額会員になることを望んでいます。したがって、メンバーシップを購入すると、31 日間使用できます。31 日がなくなるとメンバーシップが失われるようにするにはどうすればよいですか。また、毎月のメンバーシップを定期的にしたいです。ペイパルの私のIPNを皆さんに見せてください。

 <?php
 include("session1.php");
 ini_set('log_errors', true);
 ini_set('error_log', dirname(__FILE__).'/ipn_errors.log');

include('ipnlistener.php'); 
$listener = new IpnListener();

$listener->use_sandbox = true;
try {
$listener->requirePostMethod();
$verified = $listener->processIpn();
 } catch (Exception $e) {
 error_log($e->getMessage());
 exit(0);
 }

 if ($verified) {
 $errmsg = '';  
 if ($_POST['payment_status'] != 'Completed') { 
    exit(0); 
 }
 if ($_POST['mc_currency'] != 'USD') {
    $errmsg .= "'mc_currency' does not match: ";
    $errmsg .= $_POST['mc_currency']."\n";
 }
  else
 require("include/config.php");
 $mailer = "email@email.com";
  $item_name = $_POST['item_name'];
  $item_number = $_POST['item_number'];
 $payment_status = $_POST['payment_status'];
 $payment_amount = $_POST['mc_gross'];
 $payment_currency = $_POST['mc_currency'];
 $txn_id = $_POST['txn_id'];
$receiver_email = $_POST['receiver_email'];
$email = $_POST['payer_email'];
$first_name = $_POST['first_name'];
$last_name = $_POST['last_name'];
$custom = $_POST["custom"];
$userid = $custom;

mysql_query("UPDATE users SET plan='$item_name', memberstatus='member', subdays='31' WHERE username='$userid'");
$sql = "INSERT INTO orders VALUES 
(NULL, '$userid', '$receiver_email', '$item_name', '$payment_amount')";

    echo "Payment accpeted. Redirecting ";
    if (!mysql_query($sql)) {
        error_log(mysql_error());
        exit(0);
    }
}
?>
4

1 に答える 1

0

データベースを使えば簡単にできます。membersという名前のフィールドを DB テーブルに追加しますlast_renewed。このフィールドにはtimestamp、メンバーが最後にアカウントを更新したときの情報が含まれます。

PHP ファイルで、現在の時刻とlast_renewed31 日の差がある値を比較します。

たとえば (UNIX タイムスタンプを使用)

$period = 31*24*60*60; //31 days in seconds.
if(time() - $member['last_renewed'] > $period)
{
  echo "You'll have to renew your account";
}
else
{
   //He's ok.
}

編集:更新コード:

$time = time(); //Current unix timestamp
mysql_query("UPDATE users SET plan='$item_name', memberstatus='member', subdays='$time' WHERE username='$userid'");
于 2012-08-25T09:11:53.673 に答える