Каков наиболее разумный механизм для поддержания / повторной отправки переменных POST между страницами? - PullRequest
0 голосов
/ 14 сентября 2011

Потенциально глупый вопрос, но я ищу наиболее разумный механизм для поддержки и «повторной отправки» переменных POST. В основном рабочий процесс выглядит следующим образом:

ШАГ 1) Выберите оплату и введите информацию об оплате

ШАГ 2) Отображение страницы подтверждения / сводки с опцией «РАСШИРИТЬ С ОПЛАТЕ» или «РЕДАКТИРОВАТЬ ИНФОРМАЦИЮ»

ШАГ 3) Вернитесь в форму редактирования или отправьте данные для обработки.

В настоящее время я использую одну страницу для всех действий (только один гигантский ПЕРЕКЛЮЧАТЕЛЬ, основанный на переменной "action") и отправляю информацию. У меня проблема в том, что между «страницей подтверждения» и любым другим вариантом я теряю свои данные POST (что я понимаю). Теперь мне нужен способ сохранить эти данные, не дублируя поля ввода в каждом разделе SWITCH. Ниже приведены несколько вариантов, которые я рассмотрел. Не стесняйтесь комментировать достоинства или глупости каждого:

1) сериализовать его в сеанс SAR, а затем десериализовать?

2) просто ввести / ввести значение в массив SESSION?

3) пересоздать каждый ВХОД для каждой представленной «формы» и заполнить значения

4) поместите ПЕРЕКЛЮЧАТЕЛЬ в одну форму и отобразите только соответствующие части

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

Какой рекомендуемый курс действий для классического процесса ВВОД-> ПОДТВЕРДИТЬ-> ПРОЦЕСС? Было бы замечательно, если бы я просто упустил что-то сверхъестественное / простое.

К вашему сведению: в настоящее время используется PHP 5.1.6

Лучший!

РЕДАКТИРОВАТЬ 1 Ясно, что использование отдельных страниц для различной функциональности желательно. Причина, по которой я не использую отдельные страницы, only , заключается в том, что другие страницы зависят от этой одной страницы, и руководство не допустит чистого перерыва в данный момент. Он был плохо сконструирован более 3 лет назад и сейчас только частично решается.

На данный момент я использую:

 foreach($_POST as $key=>$value)
      <input type="hidden">.......

... для достижения желаемой цели.

Ответы [ 3 ]

1 голос
/ 15 сентября 2011

Во-первых, разбить его на несколько страниц может быть хорошим решением, но я не знаю ваших конкретных потребностей.

1 и 2 плохие идеи. При этом я не знаю, что вы получаете от сериализации и десериализации переменной сеанса, которую вы не получаете с простыми парами ключ-значение в сеансе. Управление сессиями становится довольно сложным, если вы используете несколько серверов за балансировщиком нагрузки

4 Просто звучит странно. Я не знаю, что дает тебе переключатель. Если вам когда-либо приходится использовать условную логику для отображения совершенно другой функциональности для пользователя, вероятно, лучше оказаться на отдельной странице.

5 Поддельная подача? Просто звучит как клудж. Вы имеете в виду отправить данные обратно на сервер и вернуть те же данные обратно и отобразить div подтверждения? Почему бы просто не использовать Javascript и манипулировать DOM на этом этапе? Тем не менее плохая идея.

Просто отправьте параметры в форму подтверждения и заполните соответствующие поля подтверждения. (Стандартный процесс). Я думаю, что это 3, но я предлагаю вам использовать разные страницы для каждого шага. Просто держит вещи в чистоте.

1 голос
/ 14 сентября 2011
  1. сериализовать его в переменную SESSION и затем десериализовать его?
  2. просто введите / введите значение в массив SESSION?

    Очень плохо. Нажатие «Подтвердить» должно всегда подтвердить то, что отображается на странице, а не то, что происходит в каком-то туманном сеансе, хранящемся где-то на сервере (который может не быть тем сервером, который обслуживал предыдущий запрос, если у вас кластер с балансировкой нагрузки).

    Существует множество веб-сайтов, которые пытаются обнаружить, когда вы нажимаете кнопку «Назад» и отображаете страницу с ошибкой, возможно, по связанным с этим причинам.

  3. пересоздать каждый ВХОД для каждой представленной "формы" и заполнить значения

    Вы должны сделать это в любом случае для страницы "вернуться к редактированию".

    Что сложного в <input type="hidden" ... /> в цикле на странице подтверждения?

  4. поместите ПЕРЕКЛЮЧАТЕЛЬ в одну форму и отобразите только соответствующие части

    Ты имеешь в виду ввести все входные данные в display:none для страницы подтверждения? Это тоже ужасно.

0 голосов
/ 26 октября 2011

Я на самом деле использовал

<?$forward_post_data = base64_encode(serialize($_POST));?>

<input type="hidden" value="<?=$forward_post_data?>"/>

... Затем я декодирую его по мере необходимости.Работает отлично.

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