Как сохранить значения переменных в php при нажатии на href? - PullRequest
0 голосов
/ 19 июня 2020

Для веб-сайта, который я разрабатываю для своего нового бизнеса, я создал способ, позволяющий клиентам создать учетную запись и войти в систему. Когда клиент вошел в систему, есть календарь, который я создал в PHP, который подключается к SQL, чтобы показать доступное время для моей службы. В верхней части моего кода для веб-страницы он проверяет учетную запись, взятую из формы на предыдущем экране

<?php

include 'DB_connect.php';

$PHONE = $_POST['phone'];
$PASSWORD = $_POST['password'];

$sql = "SELECT * FROM users WHERE phone = '$PHONE' AND pass = '$PASSWORD';";

$result = mysqli_query($link,$sql);
$check = mysqli_fetch_array($result);
if (!isset($check)) {
    echo 'Incorrect Username/Password Combination';
    exit();
}
?>

В календаре, когда вы переключаетесь между месяцами, я создал href для печати вне календаря в php вот так

<h4><a href="?ym=<?php echo $prev;?>">&lt;</a><?php echo $html_title; ?><a href="?ym=<?php echo $next; ?>">&gt;</a></h4>

Но при переключении на предыдущий и следующий месяц он повторно запускает код вверху, проверяя логин для пользователя, он выводит их из системы, потому что нет значения для

$PHONE = $_POST['phone'];
$PASSWORD = $_POST['password'];

, поэтому он завершает выход пользователя из системы при попытке переключиться между месяцами в моем календаре. Что мне нужно сделать, чтобы пользователь оставался в системе при переключении между месяцами? Есть ли способ изменить переменные телефона и пароля на константы после входа пользователя в систему или что-то в этом роде? Я застревал на этом несколько дней и не мог понять этого. ПОМОГИТЕ!

1 Ответ

1 голос
/ 19 июня 2020

Вы захотите взглянуть на сеансы . Вы должны начать сеанс после проверки учетных данных пользователя. Затем вы можете сохранить любую информацию пользователя, которая вам нужна в сеансе, используя $_SESSION super global.

При последующих взаимодействиях вы проверяете действительность сеанса, а не повторно проверяете учетные данные пользователя.

Вы также должны устранить уязвимость SQL инъекции и правильно указать sh пароли в своей базе данных.

POST формы входа:

<?php
if(/*Verify user credentials*/){
    session_start();
    $_SESSION["user"]=$user;
}
?>

Просмотр страницы с аутентификацией:

<?php
session_start();
if(isset($_SESSION["user"])){
    //Do authenticated actions
}
else{
    //User is not authenticated
}
?>

Есть много других аспектов обработки сессий, которые было бы слишком подробно описывать здесь. Вам нужно будет правильно настроить срок действия для сеансов и, например, рассмотреть механизм хранения. Если вы запускаете свое приложение за балансировщиком нагрузки, вам понадобится центральное хранилище сеансов (например, база данных или Redis). При этом следует учитывать множество других факторов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...