Обработка формы - использовать сессии, или нет?

Falc

Новичок
Фанат
>>Тем более, что сам склоняюсь к старому варианту, плюс кэширование.

Т.е. ты склоняешься к варианту без редиректа при ошибке?
Или что ты понимаешь под "старым вариантом"?

-~{}~ 27.01.05 17:43:

_RVK_
Т.е. при успешном сабмите формы ты убиваешь сессию?
А если пользователь заполняет сразу несколько форм на сайте?
 

_RVK_

Новичок
Т.е. при успешном сабмите формы ты убиваешь сессию
Конечно. В этом скрипте лна нужна только для сохранения данных. Так зачем её дальше хранить?
А если пользователь заполняет сразу несколько форм на сайте
Опять же, этот скрипт просто пример. Если сессия нужна то естетственно её убивать не следует. Но я все же не понял твоего замечания. Ну и пусть себе заполняет. Заполнил одну, послал; заполнил вторую, послал.... где грабли?
 

Falc

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

_RVK_

Новичок
Вообще, в этом варианте недостаток в том, что если пользователь не станет исправлять ошибки и уйдет, то в сесии останутся данные, хотя они больше не пригодятся. Эта проблемма решается убиванием сессии сразу, но тогда появляется проблемма с F5.

-~{}~ 27.01.05 17:58:

Вариант конечно достаточно экстримальный, но все же теоритически возможен
Вот и я о том что маловероятный. Хочешь сказать что из-за этого стоить оставить сессию? Просто удалить из неё данные?
 

Falc

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

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

_RVK_

Новичок
Я скажу так, что нормальный пользователь врядли сильно раздует твою сессиию. А злоумышленик сможет забить ее и в твоем варианте
Видно пора домой отдыхать. Я не понял как и тот и другой может раздуть сессию. В реальной системе ес-но данные проверяются на макс. размер и т.п. шалости. Лично у меня опасения только в том что у нас есть ненужная никому сессия, а в ней никому не нужные данные. Но эта проблемма решается двумя строчками в каком нить файле, подключаемом ко всем скриптам.
А если тебя интересует мое мнение, то оно таково: не стоит при обработки формы использовать сесии, юзера как-нибудь переживут
А мне кажется использование сесси для этих целей удобным.

-~{}~ 27.01.05 18:21:

Да, мы забываем о том что сессия все равно нам нужна для защиты от флуда.
 

Falc

Новичок
А да, в твоем варианте сессию не раздуешь, ошибся. Это если для каждой формы создавать новый массив в сесии, тогда можно забить сесию.
 

sakon

П..и.н..ок
_RVK_
(IMHO) Мне кажется, что
PHP:
$_SESSION['FID'])
надо жеско привязывать к форме.
 

svetasmirnova

маленький монстрик
Чтобы расслабиться ;)

А видели как в livejournal.com сделали? Я имею в виду тот случай, когда отвечая кому-либо, вводишь невалидный текст (я ввела <?php)
 

Gas

может по одной?
_RVK_
Думаю вместо 'FID' использовать уникальный идентификатор для каждой формы. Я тоже это поддерживаю :)
 

Фанат

oncle terrible
Команда форума
видели-видели.
нам понравилось.
простенько и со вкусом
 

Фанат

oncle terrible
Команда форума
когда решите с формами - расскажете к чему пришли?

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

_RVK_

Новичок
Думаю вместо 'FID' использовать уникальный идентификатор для каждой формы. Я тоже это поддерживаю
Господа, мы же программары. Давайте говорить кодом. Пример, плиз. И аргументы в пользу такого решения.
 

Demiurg

Guest
_RVK_
код придуман для общения людей с компьютерами а не для общения программистов друг с другом.
 

Фанат

oncle terrible
Команда форума
Demiurg
он хотел сказать - для иллюстрации своих мыслей.
 

_RVK_

Новичок
Demiurg
Ошибся. Я имел ввиду не код на конкретном языке, а алгоритм. Лично я не понял что такое "жеско привязывать к форме". И не понял почему "Думаю вместо 'FID' использовать уникальный идентификатор для каждой формы."

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

Gas

может по одной?
И не понял почему "Думаю вместо 'FID' использовать уникальный идентификатор для каждой формы."
подумал, и действительно зачем уникальные идентификаторы :)
 

Screjet

Новичок
Чтото типа алгоритма :)

1. Запрос формы (GET)
1.1. Проверим, существует ли ИД формы?
1.1.1. Да.
1.1.1.1. проверяем/выполняем п.7
1.1.1.2. п.2
1.1.2. Нет.
1.1.2.1. формируем ИД формы, записываем с сессию для этой формы
2. формируем форму
2.1. отрисовываем ошибки, ФАК, етц(если есть в сессии)
2.2. показываем юзеру
4. юзер наполняет(редактирует) форму, жмет сабмит
5. проверяем JSом
6. уходит на сервер (POST)
7. проверяем, если ИД формы успешно сохранен, п.9.1.4.
8. сохраняем в сессии
9. проверяем ошибки:
9.1. Нет ошибок:
9.1.1. сбрасываем в БД
9.1.2. ИД формы в сессии отмечаем сохраненным
9.1.3. данные формы в сессии очищаем (экономим память)
9.1.4. редиректим на "спасибо" (см. п.10)
9.2. Есть ошибки:
9.2.1.Записываем в сессию ошибки
9.2.2. редирект на п.1
10. плохой коннект, юзер "спасибо" не получает, жмет Ф5:
10.1. переход к п.6
11. коннект хороший, юзер получает "спасибо":
11.1. удаляем из сессии успешный ИД формы
 
Сверху