Система пробного периода вместе с подпиской — PHP и MySQL

#php #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:

  1. Добавьте expiry_date столбец в таблицу пользователей (который будет добавлен автоматически после регистрации.. Нравится current_date 30 days . Плюс добавьте еще одну колонку fees_paid=0 .
  2. Если вы используете платежный шлюз для оплаты, отправьте автоматическое электронное письмо со ссылкой для оплаты пользователю до истечения пробного периода. Если пользователь производит платеж, обновите базу expiry_date registartion_date 60 days данных (или XX дней, которые вы хотите добавить) и fees_paid=1 укажите другие платежные реквизиты, такие как дата платежа, идентификатор платежа и т.д… через ответ webhook вместе с платежными реквизитами.
  3. Если вы не используете платежный шлюз и не собираете платежи через нефть / наличные и т.д., То через свою панель администратора активируйте учетную запись пользователя adding desired days in registration_date от имени пользователя.

В базе данных вы можете добавить некоторые столбцы, такие как fees_paid = 0 / fees_paid = 1 (0 для неоплаченных и 1 для оплаченных), order_number= random_generated_unique_string , payment_date , payment_id и т.д. Для сохранения платежных реквизитов.

Комментарии:

1. Это именно то, что я искал! Огромное спасибо

2. Но у меня есть сомнения по этому поводу (дата регистрации 60 дней). Потому что давайте предположим, что если пользователь зарегистрировался 1 января и решил подписаться на план 5 января, то он должен дни с 5 января (день оплаты), а не с даты регистрации (1 января)

3. затем добавьте xx дней в дату оплаты