繁体   English   中英

试用期系统连同订阅 - PHP 和 MySQL

[英]The trial period system along with subscription - PHP and MySQL

我使用 PHP 和 Mysql 构建了一个试用期系统,它运行良好。 但我想要实现的是,一旦用户购买订阅,它应该自动更新时间段。 例如,如果用户注册了 30 天的订阅,那么它应该增加 30 天。

我不希望有人为我编写代码。 只是想知道它是如何做到的。 因为这是我第一次构建这样的东西。 需要您的指导!

我知道代码容易受到 SQL 注入的影响。 您可以忽略它,因为这仅用于测试目的

<?php 

session_start();

include 'db-connection.php';

   $user_email = mysqli_real_escape_string($connection, $_POST['user_email']);
   $user_pass = mysqli_real_escape_string($connection, $_POST['user_pass']);
   
   $select_user = "select * from users where user_email='$user_email'";
   $select_user_query = mysqli_query($connection, $select_user);
   $user_email_count = mysqli_num_rows($select_user_query);

   if($user_email_count) {
       $user_result_array = mysqli_fetch_array($select_user_query);
       $user_db_pass = $user_result_array['user_pass'];
       $user_id = $user_result_array['user_id'];
       $user_name = $user_result_array['user_name'];
       
     
       
       if($user_pass === $user_db_pass ) {
           $_SESSION['user_id'] = $user_id;
           $_SESSION['user_name'] = $user_name;
           
       $user_registration_date = new DateTime($user_result_array['user_registration']); // This fetch the user registration date from database
       $today_date = new DateTime();
       $trial_period = 7;
       $date_diff = date_diff($user_registration_date,$today_date);
       $date_difference = $date_diff->format('%d days');
           
           if($date_difference >= $trial_period){
             echo "Trial period is over";
           } else {
             echo "<span class='alert alert-success'>Login Successful</span>";
           }
       
       } else {
           echo "<span class='alert alert-danger'>You have entered wrong password</span>";
       }
       
   } else {
       echo "<span class='alert alert-danger'>No Record Found</span>";
   }

?>

试用期结束后,它会将用户重定向到 trial.php 页面,要求用户付款。

一旦付款,它应该增加时间段(这是我不知道如何实现的步骤)

用户表

User_id | user_registration | user_name | user_email | user_pass | user_phone

  1. 在 user 表中添加expiry_date列(注册后将自动添加.. 比如current_date + 30 days 。另外添加一列fees_paid=0

  2. 如果您使用支付网关进行支付,请在试用期到期之前将带有支付链接的自动 email 发送给用户 如果用户付款,请使用 registartion_date registartion_date + 60 days (或您要添加的 XX 天)更新数据库expiry_date ,并通过 webhook 响应以及付款详细信息,将fees_paid=1与其他付款详细信息(如付款日期、payment_id 等)登录。

  3. 如果您不使用支付网关并通过 neft / 现金等方式收款,则通过您的管理面板,通过在用户的adding desired days in registration_date激活用户的帐户。

在数据库中,您可以添加一些列,如fees_paid = 0 / fees_paid = 1 (0 表示未支付,1 表示已支付)、 order_number= random_generated_unique_stringpayment_datepayment_id等以保存付款详情。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM