Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Закрытая темаСоздание новой темыСоздание опроса

> как грамотно обработать POST запрос?
yuriy  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Banned
Сообщений: 251
Пользователь №: 29784
На форуме: 5 лет, 7 месяцев, 28 дней
Карма:




Привет!

Браузер Firefox 11.0, html-страница содержит форму с полями для ввода фамилии, имя, отчества и так далее. После заполнения формы клиент нажимает на кнопку, данные улетают на сервер, сервер возвращает ту же самую страницу с той же формой. Данные формы всегда обрабатываются по одному и тому же URL, параметр action формы пуст. Вопрос. Как сделать, чтобы

1) при нажатии кнопки "Обновить" в браузере, не появлялось окно с надписью:

"Чтобы отобразить эту страницу, Firefox должен отправить информацию, которая повторит любое ранее произведённое действие (например, запрос на поиск или онлайн-покупка)."

2) Если клиент ушёл со страницы с формой по другому URL, а затем нажал кнопку "Назад" в браузере, то появлялась страница с формой, а не надпись "Не удалось загрузить эту страницу.".

Спасибо!



Спустя 2 минуты, 56 секунд (21.03.2012 - 11:06) Ramzil_Nixon написал(а):
Цитата (yuriy @ 21.03.2012 - 08:03)
Привет!

Браузер Firefox 11.0, html-страница содержит форму с полями для ввода фамилии, имя, отчества и так далее. После заполнения формы клиент нажимает на кнопку, данные улетают на сервер, сервер возвращает ту же самую страницу с той же формой. Данные формы всегда обрабатываются по одному и тому же URL, параметр action формы пуст. Вопрос. Как сделать, чтобы

1) при нажатии кнопки "Обновить" в браузере, не появлялось окно с надписью:

"Чтобы отобразить эту страницу, Firefox должен отправить информацию, которая повторит любое ранее произведённое действие (например, запрос на поиск или онлайн-покупка)."

2) Если клиент ушёл со страницы с формой по другому URL, а затем нажал кнопку "Назад" в браузере, то появлялась страница с формой, а не надпись "Не удалось загрузить эту страницу.".

Спасибо!



Не совсем понял тебя..

Спустя 4 минуты, 17 секунд (21.03.2012 - 11:11) Visman написал(а):
После обработки данных делай переадресацию на себя, примерно так
header('Location: http://'. $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']);
exit();

Спустя 7 минут, 56 секунд (21.03.2012 - 11:19) yuriy написал(а):
После обработки данных подумывал делать так:


if (!empty($_POST)) {
unset($_POST);
header("HTTP/1.1 205 Reset Content");
header('Location: ' . $this->_register->getCurrentUrl());
}


Это если пользователь ввёл всё верно. Если данные $_POST пришли не такие, какие ожидались, то переадресацию делать нельзя - нужно вывести сообщение об ошибке. Вот я поэтому чёт и не врублюсь, как грамотно обработать.

Спустя 4 минуты, 42 секунды (21.03.2012 - 11:23) Visman написал(а):
1. Если есть $_POST, то проверяем данные (2), иначе выводи форму без данных.
2. Проверяем данные, если ошибки, то выводим вместо формы текст с описанием ошибки, иначе переадресация на себя для сброса данных.

Спустя 6 минут, 17 секунд (21.03.2012 - 11:29) yuriy написал(а):
Если точнее, то, если данные не верные, то выводим текст с описанием ошибки и форму с теми данными, которые верные. И при этом никуда не деться от проблем, которые были описаны мною в самом начале поста.

Спустя 3 минуты, 51 секунда (21.03.2012 - 11:33) Visman написал(а):
Можно попробовать извратиться.
Когда выводишь текст ошибки (и форму), то это ответ на запрос пост, отсюда и ошибка.
Если делать ту же переадресацию на себя, но передавать данные об ошибке и сами данные через сессию, то сообщение об ошибке и саму форму с данными уже будешь открывать не по запросу пост.
Возможно, тогда такое поведение браузера исчезнет.

Спустя 4 минуты, 59 секунд (21.03.2012 - 11:38) yuriy написал(а):
Ага. Спасибо большое. Я тоже думаю, что в сессию нужно пихнуть сиё дело, но решил спросить у форума, может ещё есть какие методы.


--------------------
void x;
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Закрытая темаСоздание новой темыСоздание опроса