PHP: правильное использование сессии в многоэтапной форме регистрации - PullRequest
0 голосов
/ 09 марта 2020

Я сделал трехэтапный (3 разные страницы) процесс регистрации:

Первый шаг: пользователь предоставляет основную c информацию (имя, пароль, пол, день рождения) , et c.)

Второй шаг: пользователь предоставляет дополнительную информацию (о профессии, сфере интересов и т. д. c.), отправляет данные и получает ссылку для проверки

Третий шаг: Показывает статус регистрации (успешно или не удалось)

Я использую сеанс, чтобы в первую очередь хранить информацию. Переменная сеанса типа $_SESSION["step_one_complete"] говорит мне, что предыдущий шаг был выполнен, что необходимо. В начале моей страницы signup.php я использовал следующий код, чтобы каждый раз, когда signup.php загружает данные предыдущего сеанса, очищаются:

<?php //signup.php(step one)

session_start();

//Clear previous session data
$_SESSION = array();

//I'm not sure about the two lines bellow
session_destroy();
//Restart session
session_start();

...

Нужны ли две упомянутые мной строки в коде? Я правильно использую сессию? Или есть лучший способ обработки многошаговой формы? Спасибо!

1 Ответ

2 голосов
/ 09 марта 2020

TLDR; Нет, ты не Вам просто нужно start_session, вам не нужно переопределять сеанс или уничтожать его.

Возможно, я не правильно понимаю вопрос, но когда вы делаете start_session (), вы включаете сеанс в ваш текущий php скрипт, начиная новый сеанс или возобновляя существующий . Я думаю, что в вашем случае это все, что вам нужно. Ссылка: PHP - session_start

Кроме того, я считаю плохой практикой перезаписывать сеанс, вы также можете удалять вещи, которые вы не собираетесь. Если вы хотите сбросить ваши переменные, я предлагаю вам сохранить их в массив, например

$_SESSION['form']['email']

, а затем, если вы хотите сбросить, make

$_SESSION['form'] = array();

Я думаю, вы можете сделать лучше если вы создаете структуру, подобную этой:

function is_first_step_completed() // checks if the first step fields are filled or not
function is_second_step_completed() // checks if the second step has all fields completed
if (!is_first_step_completed()) {
// show first step
}

вместо хранения переменной is_first_step_completed. Если вы используете переменную, подобную этой, вам нужно будет постоянно указывать значение true или false.

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