Как мне управлять потоком многостраничной формы PHP? - PullRequest
3 голосов
/ 10 сентября 2010

Я немного новичок в PHP. Я разработал многостраничную форму, которая отлично работает в данный момент - каждый этап находится на другой странице (я использую сеанс для сохранения данных).Однако я знаю, что пользователи не всегда используют эти формы так, как вы хотите!

Я хочу контролировать поток формы.

  • Я бы хотел, чтобы пользователь могиспользовать кнопку браузера «назад и вперед» для простоты использования.
  • Они не должны иметь возможность пропустить часть формы, введя URL-адрес этапа формы непосредственно в адресную строку, чтобы получить более позднюю версию.этап в форме (по сути, пропуская часть формы).

  • Форма также не проходит каждый раз один и тот же путь, она зависит от выбора пользователя, какой этап отображается следующим.

Мне было интересно, есть ли у кого-нибудь идеи о способах управления потоком этой многостраничной формы, спасибо!

Ответы [ 4 ]

2 голосов
/ 10 сентября 2010

сохраняет результаты формы в СЕССИЯХ (зашифруйте их, если они чувствительны)

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

используйте другой сеанс для проверкихода выполнения », чтобы пользователь не мог пропустить его.например ...

<?php
  /* on form 3 */
    if(isset($_SESSION['progress'] && $_SESSION['progress']==2)
    {
       //the second form has been filled out and validates
    }
    else
    {
      // the 2nd form hasn't been finished, redirect
    }
?>

вы также можете использовать в сеансе систему, основанную на процентах - значение 90 означает, что 90% полей формы заполнены - для отображения «прогресса» ввизуальные средства для пользователя.

в основном при каждой отправке формы, проверьте, что было отправлено, если это ожидается, затем установите соответствующие сеансы для перенаправления на следующий этап.

проверять каждый установленный сеанс в каждой форме, чтобы определить, должен ли пользователь быть здесь.

0 голосов
/ 10 сентября 2010

Вы можете использовать данные сеанса для сохранения состояния между несколькими страницами или передавать все данные на каждой странице. Обычно вы делаете последнее со скрытыми полями или создаете одну огромную форму и используете javascript, чтобы она выглядела так, как если бы это было несколько страниц, тогда как на самом деле это не так.

У каждого решения есть свои плюсы и минусы.

0 голосов
/ 10 сентября 2010

Я бы хотел, чтобы пользователь мог использовать кнопку браузера назад и вперед

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

Это единственная проблема, которую я вижу здесь.

0 голосов
/ 10 сентября 2010

Вставьте данные для нетоковых полей в скрытое поле в браузере (чтобы сэкономить время и усилия - просто сериализовать массив / объект).

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