Корректная отправка формы.

kpp

Новичок
Корректная отправка формы.

Добрый день.
Сегодня я хочу спросить вас о такой вещи как отправка формы.
Форма отправляется на скрипт, скрипт обрабатывает пришедшие значения массива REQUEST и далее выполняется header("location:form.php");

Как видно мы вернулись с вами на скрипт с формой. Теперь там должно быть написано "форма отправлена", вместо полей формы.

Чтобы узнать, что форма отправлена, я смотрю реферер, а в нём не имя скрипта, который принял поля формы и обработал их, а имя скрипта с самой формой.

Что писать при проверке реверера в скрипте с формой(form.php)?
 

Beavis

Banned
kpp
а не проще таргетом формы поставить form.php ? а то лишняя переадресация получается
 

kpp

Новичок
просто при обновлении страницы в этом случае не будет повторной отправки формы.
 

Гравицапа

elbirret elcno
kpp
просто при обновлении страницы в этом случае не будет повторной отправки формы.
header("location:form.php");
можно сделать и из тогоже скрипта form.php
Чтобы узнать, что форма отправлена, я смотрю реферер, а в нём не имя скрипта, который принял поля формы и обработал их, а имя скрипта с самой формой.
А что мешает после выполения всех действий по обработке данных, пришедших из формы, делать редирект на
form.php?form_send=1
и там смотреть параметр form_send и показывать это сообщение взависимости от этого параметра?
 

kpp

Новичок
Автор оригинала: Гравицапа
kpp

header("location:form.php");
можно сделать и из тогоже скрипта form.php

А что мешает после выполения всех действий по обработке данных, пришедших из формы, делать редирект на
form.php?form_send=1
и там смотреть параметр form_send и показывать это сообщение взависимости от этого параметра?
Этот вариант используют редко и он некрасив. Как-то не серьёзно смотрится. Есть ещё вариант с созданием сесии с переменной form_sended_on например, но я хотел бы проверять по рефереру.

Почему до сих пор нет единого классического способа обработки отправки формы и контроля за повторной её отправкой.

Есть ли люди, которые давно программируют на РНР иу них имеется привычный способ один?
 

MadGreen

meninweb
Автор оригинала: kpp
Теперь там должно быть написано "форма отправлена", вместо полей формы.
ну так обработав данные из формы и перенаправь пользователя на страницу, например, с сообщением об успешной отправке...
 

Anarki

Новичок
kpp

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

Beavis

Banned
заводить сессии только ради этого накладно... проще куки поставить.. я когда делал подобные вещи (когда именно надо было разделить форму с таргетом) делал переадресацию например на form.php?msg=ok - заодно в параметре можно указать вид сообщения и тип ошибки при заполнении формы, например если заполнены не все поля и т.п. ?msg=err , ?msg=badlogin и т.д.
 

Фанат

oncle terrible
Команда форума
kpp
есть люди, которые хоть раз в жизни открывали спецификацию протокола НТТР и знают его особенности и ограничения.
Рекомендую тебе вступить в их число, чтобы не делать заявлений, после которых тебе потом будет стыдно.

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

kpp

Новичок
Короче я остановлюсь на переадресации на ту же страницу. и плюс проверка реферера. Получается замечательно.
Мы с вами отправляем форму с адреса www.site.ru/form.php (экшен на другую страницу) и возвращаемся туда же, но видим уже слова благодарности, написанные зелёными буквами.
Если мы с вами обновим страницу, то ... то ничего повторно не отправится и мы будем видеть буквы. Если нажать на кнопку возврата в браузере, то мы вернёмся на страницу, с которой пришли на эту форму. Лучше этого варианта я и представить не могу.

А если делать переадресации со страницы на страницу, то при нажатии на кнопку назад мы вернёмся на скрипт отправкй , а потом и на скрипт формы... это будет неприятно для пользователя, особенно если у него 128 kbps. (у меня слава алаху 600 kbps)
 
Сверху