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

Yukko

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

TuBu

Guest
Мне кажется, что процент пользователей, ради которого этого делается, не стОит этого обсуждения.

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

Все вышесказанное, моё скромное ИМХО.
 

desperado

Новичок
если перед заполнением формы, давать самой форме уникальный идентификатор (не идентификатор "типа"\"вида" формы), то повторно она никак не будет заполненна
 

advanced guest

Guest
ИМХО сделать редирект вовсе несложно, зато вот удобство пользования сразу повышается. И если передавать идентификатор конкретной формы, то и проблемы
Пользователь неправильно заполнил форму. Ему так вежливо "Вы неправильно заполнили некторые поля". А он, подумав "а ну вас!", пошел дальше бродить по сайту. Через пол часа он снова набретает на эту же форму, а она все еше заполнена его данными,
не будет.

ЗЫ: Идею ID формы почерпнул из этой ветки, сам раньше как-то не задумывался. Спасибо :)
 

Фанат

oncle terrible
Команда форума
Упдейт.
Во-первых, спасибо Давиду Мзауреляну за то, что пнул в том смысле, что данные- то в сессии надо хранить всего долю секунды. То есть, особенно париться за их уникальность не нужно.

Далее.
Спасибо Алекею Земскову за то, что заставил перечитать RFC и показал свой проект, который разрешает кэширование страниц, запрошеных постом.
В результате, я, пожалуй, остановлюсь именно на таком варианте. В нормальном браузере все будет работать, как надо: кнопка Back просто покажет страницу с ошибкой, а сообщение о невозможности отобразить будет показано только если нажать Ф5, что логично.
 

D!!!

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

Я делаю вроде более просто
PHP:
<form action="" method="post">
<input type="text" name="myname" value="<? ( isset( $_POST['myname'] ) ) ? htmlspecialchars( $_POST['myname'] ) : '' ?>">
<input type="submit">
</form>
Ну а если честно, то у меня каждый html файл это шаблон, там все еще намного проще:
PHP:
<form action="{ACTION}" method="post">
<input type="text" name="myname" value="{myname}">
<input type="submit">
</form>
Подключаю этот шаблон и заменяю все переменные так:
PHP:
<?
$s = implode( '', file( 'template.html' ) );
foreach ( $_POST as $k => $v ) $s = str_replace( '{'.$k.'}', htmlspecialchars( $v ), $s );

echo $s;
?>
 

D!!!

Новичок
Я делаю вроде более просто

PHP:
<form action="" method="post">
<input type="text" name="myname" value="<? ( isset( $_POST['myname'] ) ) ? htmlspecialchars( $_POST['myname'] ) : '' ?>">
<input type="submit">
</form>
Извините, ошибочка тут есть маленькая
надо писать:
PHP:
<?= ( isset( $_POST['myname'] ) ) ? htmlspecialchars( $_POST['myname'] ) : '' ?>
Обязательно <?= вместо <? или данные просто не выведутся.
 

Фанат

oncle terrible
Команда форума
WOW!
Ну, это меняет всё дело :)
Получается, скрипт ещё круче.

слушай, ты, случайно платные консультации не оказываешь?
Я бы к тебе в ученики пошёл?
 

D!!!

Новичок
Автор оригинала: Фанат
WOW!
Ну, это меняет всё дело :)
Получается, скрипт ещё круче.

слушай, ты, случайно платные консультации не оказываешь?
Я бы к тебе в ученики пошёл?
Ну ты однако и юморист :D
Очепятался я, а ты издеваешься :mad:
 

_RVK_

Новичок
Фанат
Может стоит вырезать этот кусок? Жаль ведь тему.
 

svetasmirnova

маленький монстрик
Originally posted by _RVK_
Фанат
Может стоит вырезать этот кусок? Жаль ведь тему.
Ну зачем вырезать? Я давно так не смеялась;)
D!!!
>Очепятался я, а ты издеваешься
И что самое обидное, совсем не над очепяткой.
 

D!!!

Новичок
Автор оригинала: svetasmirnova
Ну зачем вырезать? Я давно так не смеялась;)
D!!!
>Очепятался я, а ты издеваешься
И что самое обидное, совсем не над очепяткой.
Солнышко, а над чем же ты смеялась ? :)
 

asm

Пофигист
Вообще строго говоря мне не понятно что страшного в невозможности отображения страницы без повторной отправки данных? А воротить все через сессии только что бы ее не было я думаю пользователи не оценят...
 

TuBu

Guest
asm

А пользователи не поймут, что надо что-нибудь оценивать
 

Курсий

Guest
2 Фанат
А можно поподробнее про "кэширование поста"?
В какую сторону смотреть?
 

Фанат

oncle terrible
Команда форума
я пока сам толком не разобрялся.
автор утверждает, что надо писать Expires: 0
но это мне кажется шаманством.
Надо читать и экспериментировать
 

Apache_xp

Новичок
to Фанат
Если не против можно поинтересоваться :
Во-первых, спасибо Давиду Мзауреляну за то, что пнул в том смысле, что данные- то в сессии надо хранить всего долю секунды. То есть, особенно париться за их уникальность не нужно.
Я не совсем понял причины беспокойства за уникальность,
может просто я их как то храню не так ...
 
Сверху