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

grigori

( ͡° ͜ʖ ͡°)
Команда форума
"сколько ангелов поместится на булавочной головке?" (С) Фома Аквинский

Где можно получить информацию онтосительно аксиомы о необходимости редиректа после каждого POST-запроса?
 

Huckster

Guest
Автор оригинала: grigori
Где можно получить информацию онтосительно аксиомы о необходимости редиректа после каждого POST-запроса?
Аксиомы-то, возможно и нет, но "Страница устарела" - достаточно неизящно и всех раздражает, а многим и непонятно вовсе, что это означает. Я так понимаю, что в этом 90% единодушны. Есть варианты избавится от этого без редиректа?
 

IntenT

SkyDiver
Huckster
редирект нужен совсем для других целей. страница устаревает как с ним так и без него.
 

Huckster

Guest
2 intent
Страница не устаревает, если редиркт делать еще у клиента с помощью javascript:window.location.replace

И еще: если клиент что-то не заполнил или заполнил неправильно, а потом ушел куда-то на другую страницу и вернулся потом обратно к форме - он МАСТ увидеть там то, что он до этого вводил. (с)Стив Круг, "Веб-дизайн". Это уже вопросы юзабилити. А как это решить без сессий? Куку, что ли ему отправлять? :)
 

Huckster

Guest
Но ведь если форма не была отправлена "окончательно", весьма неплохо, если эти данные будут сохраняться в сессии и выводиться у клиента. Неужели нет? Ну, например, он где-то на половине формы наткнулся на выбор какого-нибудь тарифного плана и ссылку на описание тарифов. Ушел по ней, прочитал, вернулся - а там ни его длиннющего домашнего адреса, ни всего остального. Все заново вводить. Плохо.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
ВСЕГДА после ПОСТа должен идти редирект.
У меня есть сомнение относительно слова "всегда", а так же вопрос, какой редирект имеется ввиду - header('Location ...'), <meta ...>, setTimeout(" window.location.href ..."), windows.history?

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

А вот после запроса на регистрацию нового email я не делаю редирект, потому что выводится окно, куда надо ввести код, который на тот email высылается.
В чем я неправ - в том, что пользователь нажмет F5?
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Автор оригинала: Huckster
Но ведь если форма не была отправлена "окончательно", данные будут ...
отслеживаться средствами Javascript (листнеры на DOM-структуре формы) и при нажатии на любую ссылку данные из незаполненной формы будут посылаться на сайт в отдельном самозакрывающемся окошке, там сохраняться в специальную отдельную сессию (которая, конечно, в базе).
Тогда при посещении форм скрипт заглядывает в ту специальную сессию и чудесно заполняет незаконченную форму.
Но сначала с заказчика берется адекватная этому бреду оплата.

-~{}~ 03.02.05 19:29:

Автор оригинала: Фанат
ну так поделись им.
Форма может быть многостраничная и при незаполнении какой-то из страниц теряется смысл во всей процедуре.
Если юзер начнет нажимать назад посреди процесса, он попадет на страницу с просьбой повторить ввод (или сообщение что страница устарела) в любом случае - не после первого, так после 2го нажатия.
Есть ли смысл делать редирект после поста до окончания процедуры из нескольких страниц?

Как я помню, 2616 требует, чтобы после поста выводилась информация, никаким другим способом недоступная, и после последнего поста редирект обязателен - тут вопросов нет.

редирект бывает только один
т.е. javascript
 

Фанат

oncle terrible
Команда форума
Форма может быть многостраничная и при незаполнении какой-то из страниц теряется смысл во всей процедуре.
многостада.. ээ ничная форма теряет смысл при отсутствии сессий.
при наличии сессий сделать редирект после нажатия на кнопку и обработать возврат КАЧЕСТВННО - ничего не стоит.
препятствий к редиректу - нет.
смешная шутка.
я смотрю, топик этот будит в людях здоровое чувство юмора
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
>многостада.. ээ ничная форма теряет смысл при отсутствии сессий
не всегда, например:
- при подтверждении email (любой запрос ввода контрольного кода, который хранится в базе)
- при передаче полученных данных дальше (на другой сайт, другой программе)
- при сохранении данных в базе, например, с флагом, свидетельствующем о незаконченности записи (такие записи чистятся периодически)

>я смотрю, топик этот будит в людях здоровое чувство юмора
безусловно :) с этого я и начал свой вопрос

а кроме того, ты используешь общепринятое в твоем окружении понятие "редирект", которое не имеет технически однозначного определения в сообществе web-разработчиков мирового масштаба
и хочешь, чтобы знание жаргона дало тебе видимость грамотности :)

-~{}~ 03.02.05 21:30:

но вопрос не в этом, редирект - это конечно, страница, на которой предлагается сделать переход дальше

>при наличии сессий сделать редирект после нажатия на кнопку и обработать возврат КАЧЕСТВННО - ничего не стоит.
препятствий к редиректу - нет.
вопрос не в этом,
вопрос в том, куда переходить, и в том, бывают ли случаи, когда можно и не переходить
 

_RVK_

Новичок
redirect - гл. переориентировать(ся) (c) Lingvo
Поменять ориентацию :)

grigori
Тебе не кажется, что хотя и можно иногда обойтись без редиректа, но лучше все таки избежать сообщений "ваша страница устарела"? Или есть ситуации когда этого сделать невозможно, следовательно и редирект ненужен?
 

Huckster

Guest
grigori
в любом случае - не после первого, так после 2го нажатия.
http://bisbank.com/register.php

Работаю над формой. Сколько угодно нажимайте "назад" или "обновить" - не будет никакой мессаги браузера о просьбе повторной отпраки данных.

Скоро уберу.

-~{}~ 15.02.05 06:01:

Форма + сессии - только так!

Топ - риторический.
 

svetasmirnova

маленький монстрик
Originally posted by Фанат
когда решите с формами - расскажете к чему пришли?

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

Huckster

Guest
С рандомным гетом, редиректом на него и проверкой уникальных ключей для каждой формы.
 
Сверху