Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (PHP) Submit формы при Refresh. Как избежать? / 13 сообщений из 13, страница 1 из 1
29.11.2005, 19:00
    #33406904
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) Submit формы при Refresh. Как избежать?
Привет всем!

Не пойму, то ли глюк, то ли что то не дочитал...
Хотя эта штуковина скорей всего зависит от браузера, но отлавливать наверно
на стороне сервера надо.

Имеется скрипт, который формирует страничку с формой.
Пользователь что то вводит в поля, давит "Сабмит", на сервере запускается
этот же скрипт, проверяется идентификатор сессии, проверяются переменные,
что то еще делается, далее выдается страничка с информацией о том что все
выполнено нормально, а затем, через 5 секунд опять открывается страничка с
той же самой формой. Последнее сделал так (не знаю, насколько оно
правильно):
Код:
1.
2.
3.
      echo "<div>Выполнено успешно</div> \r\n";
      echo "<html><head><meta http-equiv='Refresh' content='5;
URL=".$_SERVER['PHP_SELF']."'></head></html>\n";


В общем то все работает как надо, за одним маленьким исключением. Если после
всего этого пользователь жмакнет кнопку "Обновить", то Файрфокс честно
сделает заявление о том что _повторно_ будут переданы данные формы, далее
ОК - и действительно данные передаются (видно при просмотре заголовков),
хотя форма на экране пуста. Естественно, скрипт, приняв правильные данные,
снова выполняет свою работу :((
С браузером ИЕ6 такого не замечено.

Собственно вопрос, как избежать такой бяки? Неужели придется вести список
отработанных сессий или есть какой то другой вариант?
Предложения перейти всем хором на ИЕ или сказать всем чтоб не тыкали рефреш
и ОКей не принимаюся.

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
29.11.2005, 19:14
    #33406944
*
*
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) Submit формы при Refresh. Как избежать?
http://phpclub.ru/faq/ProblemsLocations
...
Рейтинг: 0 / 0
29.11.2005, 20:56
    #33407079
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) Submit формы при Refresh. Как избежать?
Другими словами, вместо тэга meta http-equiv='Refresh' надо использовать
header(). Нет, так я сделать не могу, потому как в браузер уже отдано начало
странички и заголовок уже не катит.... А используя мета-тэг сразу
показывается страничка, а потом автоматом делается обновление.

Означает ли это, что единственный правильный способ корректного обновления
странички через пять секунд только через JavaScript ?
Или все же есть способ при корректном выполнении скрипта на следующем
"заходе" заставить выдать этому же клиенту другой идентификатор сессии, не
совпадающий с предыдущим?

Выводить же инфу о выполненных скриптом действиях в отдельном окне как то не
хочется.

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
29.11.2005, 21:12
    #33407086
4m@t!c
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) Submit формы при Refresh. Как избежать?
Зачем вам принудительно обновлять страницу на клиенте? А если он не успеет заполнить форму?
----------------------------------------
Артисты не приехали, приехали цыгане
...
Рейтинг: 0 / 0
29.11.2005, 21:16
    #33407089
4m@t!c
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) Submit формы при Refresh. Как избежать?
Вы не до конца понимаете, как работает РНР, в частности функция header(). Рекомендую почитать ссылку, озвученную господином * . причем читать до полного просветления...
----------------------------------------
Артисты не приехали, приехали цыгане
...
Рейтинг: 0 / 0
29.11.2005, 21:24
    #33407095
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) Submit формы при Refresh. Как избежать?
> 4m@t!c

Принудительное обновление как раз не в процессе заполнения, а уже после
обработки пхп-скриптом данных из формы. Тоесть, информация о том что все
выполнено успешно показывается на пять секунд, а затем опять требуется
вывести пустую форму для ввода данных.
В принципе, происходит обращение к этому же скрипту, но что ему делать (или
обработать принятые данные), определяется по переменной action, пришедшей
или же не пришедшей в массиве $_POST из той же формы. Вот как раз эта яко бы
"пустая" форма как то не совсем пустая.

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
29.11.2005, 21:28
    #33407099
4m@t!c
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) Submit формы при Refresh. Как избежать?
>Принудительное обновление как раз не в процессе заполнения, а уже после
>обработки пхп-скриптом данных из формы
Код: plaintext
<html><head><meta http-equiv='Refresh' content=' 5 ;
И где здесь HTML???

>"пустая" форма как то не совсем пустая.
Т.е. вы предлагаете клиенту отредактировать только что введенные данные?
----------------------------------------
Артисты не приехали, приехали цыгане
...
Рейтинг: 0 / 0
29.11.2005, 21:40
    #33407109
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) Submit формы при Refresh. Как избежать?
Хтмл строкой выше.

Гм... кажися просветление.... Какого хрена я воткнул <html><head><meta
.............></head></html> _ВНУТРЬ_ тэга <body></body>...

Спасибо за подсказку :)

ЗЫ а какого хрена оно еще и работает?

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
29.11.2005, 22:17
    #33407135
4m@t!c
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) Submit формы при Refresh. Как избежать?
Больше похоже на помутнение...
Дело в HTTP заголовках, а не в заголовочном тексте страницы - это вде разные вещи.... Прочтите пару раз ссылку... подумайте.. потом опять прочитет... и так, пока не поймете, что ваше высказвание насчет просветления было ошибочным... а потом возьмите и напишите все правильно.
----------------------------------------
Артисты не приехали, приехали цыгане
...
Рейтинг: 0 / 0
29.11.2005, 22:25
    #33407140
*
*
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) Submit формы при Refresh. Как избежать?
vkleНет, так я сделать не могу, потому как в браузер уже отдано начало
странички и заголовок уже не катит....А почему в браузер уже отдано начало странички? Это никогда не нужно, исправляйте логику приложения, избавляйтесь от костылей.
...
Рейтинг: 0 / 0
30.11.2005, 00:30
    #33407213
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) Submit формы при Refresh. Как избежать?
> А почему в браузер уже отдано начало странички?

Попробовал - получилось...

Сейчас предполагаю сделать чтоб после показа инфы о выполнении через 5 сек
JavaScript запросил страничку заново.... Проверю только завтра.



> Дело в HTTP заголовках, а не в заголовочном тексте страницы

Да, в это я въехал. Выдача header("Location......") - это _единственный_
способ 100% заставить забыть браузер о том что он когда то передавал уже
форму с этой страницы или существуют еще какие то способы?
Мета-тэг делает почти то же самое, но браузер помнит все что он недавно с
этой формы отсылал (про то что этот тэг отрабатывает там где не должно быть
его, это уж совсем отдельная песня)


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
06.12.2005, 14:04
    #33419533
Berkut
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) Submit формы при Refresh. Как избежать?
Гугл рулит! ;)
PHP запрет кэширования

ЗЫ на все это у меня ушло не более минуты; неужели так сложно для начала попытаться самому?
...
Рейтинг: 0 / 0
06.12.2005, 14:08
    #33419549
Berkut
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) Submit формы при Refresh. Как избежать?
Извиняюсь, не в тот топик запостил. :)

PS Модератору
Можете удалить это и предыдущее сообщения.
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (PHP) Submit формы при Refresh. Как избежать? / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]