#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:
- Добавьте
expiry_date
столбец в таблицу пользователей (который будет добавлен автоматически после регистрации.. Нравитсяcurrent_date 30 days
. Плюс добавьте еще одну колонкуfees_paid=0
. - Если вы используете платежный шлюз для оплаты, отправьте автоматическое электронное письмо со ссылкой для оплаты пользователю до истечения пробного периода. Если пользователь производит платеж, обновите базу
expiry_date
registartion_date 60 days
данных (или XX дней, которые вы хотите добавить) иfees_paid=1
укажите другие платежные реквизиты, такие как дата платежа, идентификатор платежа и т.д… через ответ webhook вместе с платежными реквизитами. - Если вы не используете платежный шлюз и не собираете платежи через нефть / наличные и т.д., То через свою панель администратора активируйте учетную запись пользователя
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 дней в дату оплаты