Неправильные представления формы - что с ними делать? - PullRequest
0 голосов
/ 24 января 2010

В последнее время я много читал о передовых практиках, касающихся дизайна веб-приложений. Мой экспертный язык - PHP / MySQL. При создании архитектуры MVC для разрабатываемого приложения я всегда сталкиваюсь с проблемой хранения недопустимых отправлений форм (чтобы пользователю не приходилось повторно вводить данные, и могут отображаться полезные сообщения об ошибках). .

Обычно я решил сохранить его как сериализованный объект в переменной SESSION, но мое последнее чтение показало, что сессии плохие и лишают возможности разработки без сохранения состояния. Вот несколько альтернатив, о которых я подумал:

  1. хранит его в базе данных, как при правильном вводе, но помечая его как недействительный
  2. хранение его в базе данных в отдельной таблице, предназначенной для неверных отправок форм
  3. сохранение его в текстовом файле

У всех есть свои недостатки.

  1. Не ВСЕ формы приводят к созданию (единого) объекта базы данных.
  2. и 3. похоже, что они похожи на переменные SESSION

Что бы вы порекомендовали?

Ответы [ 4 ]

5 голосов
/ 24 января 2010

Не храните его вообще, просто предоставьте пользователю сообщение об ошибке и другую копию формы. Используйте имеющиеся у вас данные (в $ _POST / $ _ GET, поскольку вы работаете в PHP), чтобы предварительно заполнить форму ранее введенными данными.

0 голосов
/ 24 января 2010

Посмотрите на zend_form

Он обрабатывает данные для вас. И вы также можете сделать автоматическую проверку и фильтрацию данных

0 голосов
/ 24 января 2010

1) У вас могут быть проблемы с сеансами, если вы распространяете приложение на два или более серверов в циклическом режиме или в сценарии балансировки нагрузки, но если вы не планируете масштабировать приложение больше одного сервера, это не будет применяться

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

0 голосов
/ 24 января 2010

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

  • Так что SESSION - это тот, который нужно рассмотреть.
  • Если у вас есть пользователи, вы можете сохранить их как сериализованный объект в database.
  • Другой вариант - использовать HTML5 local storage, который является лучшим методом, но пока его поддерживают только несколько браузеров.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...