|
|
|
(PHP) Submit формы при Refresh. Как избежать?
|
|||
|---|---|---|---|
|
#18+
Привет всем! Не пойму, то ли глюк, то ли что то не дочитал... Хотя эта штуковина скорей всего зависит от браузера, но отлавливать наверно на стороне сервера надо. Имеется скрипт, который формирует страничку с формой. Пользователь что то вводит в поля, давит "Сабмит", на сервере запускается этот же скрипт, проверяется идентификатор сессии, проверяются переменные, что то еще делается, далее выдается страничка с информацией о том что все выполнено нормально, а затем, через 5 секунд опять открывается страничка с той же самой формой. Последнее сделал так (не знаю, насколько оно правильно): Код: 1. 2. 3. В общем то все работает как надо, за одним маленьким исключением. Если после всего этого пользователь жмакнет кнопку "Обновить", то Файрфокс честно сделает заявление о том что _повторно_ будут переданы данные формы, далее ОК - и действительно данные передаются (видно при просмотре заголовков), хотя форма на экране пуста. Естественно, скрипт, приняв правильные данные, снова выполняет свою работу :(( С браузером ИЕ6 такого не замечено. Собственно вопрос, как избежать такой бяки? Неужели придется вести список отработанных сессий или есть какой то другой вариант? Предложения перейти всем хором на ИЕ или сказать всем чтоб не тыкали рефреш и ОКей не принимаюся. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2005, 19:00 |
|
||
|
(PHP) Submit формы при Refresh. Как избежать?
|
|||
|---|---|---|---|
|
#18+
http://phpclub.ru/faq/ProblemsLocations ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2005, 19:14 |
|
||
|
(PHP) Submit формы при Refresh. Как избежать?
|
|||
|---|---|---|---|
|
#18+
Другими словами, вместо тэга meta http-equiv='Refresh' надо использовать header(). Нет, так я сделать не могу, потому как в браузер уже отдано начало странички и заголовок уже не катит.... А используя мета-тэг сразу показывается страничка, а потом автоматом делается обновление. Означает ли это, что единственный правильный способ корректного обновления странички через пять секунд только через JavaScript ? Или все же есть способ при корректном выполнении скрипта на следующем "заходе" заставить выдать этому же клиенту другой идентификатор сессии, не совпадающий с предыдущим? Выводить же инфу о выполненных скриптом действиях в отдельном окне как то не хочется. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2005, 20:56 |
|
||
|
(PHP) Submit формы при Refresh. Как избежать?
|
|||
|---|---|---|---|
|
#18+
Зачем вам принудительно обновлять страницу на клиенте? А если он не успеет заполнить форму? ---------------------------------------- Артисты не приехали, приехали цыгане ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2005, 21:12 |
|
||
|
(PHP) Submit формы при Refresh. Как избежать?
|
|||
|---|---|---|---|
|
#18+
Вы не до конца понимаете, как работает РНР, в частности функция header(). Рекомендую почитать ссылку, озвученную господином * . причем читать до полного просветления... ---------------------------------------- Артисты не приехали, приехали цыгане ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2005, 21:16 |
|
||
|
(PHP) Submit формы при Refresh. Как избежать?
|
|||
|---|---|---|---|
|
#18+
> 4m@t!c Принудительное обновление как раз не в процессе заполнения, а уже после обработки пхп-скриптом данных из формы. Тоесть, информация о том что все выполнено успешно показывается на пять секунд, а затем опять требуется вывести пустую форму для ввода данных. В принципе, происходит обращение к этому же скрипту, но что ему делать (или обработать принятые данные), определяется по переменной action, пришедшей или же не пришедшей в массиве $_POST из той же формы. Вот как раз эта яко бы "пустая" форма как то не совсем пустая. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2005, 21:24 |
|
||
|
(PHP) Submit формы при Refresh. Как избежать?
|
|||
|---|---|---|---|
|
#18+
>Принудительное обновление как раз не в процессе заполнения, а уже после >обработки пхп-скриптом данных из формы Код: plaintext >"пустая" форма как то не совсем пустая. Т.е. вы предлагаете клиенту отредактировать только что введенные данные? ---------------------------------------- Артисты не приехали, приехали цыгане ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2005, 21:28 |
|
||
|
(PHP) Submit формы при Refresh. Как избежать?
|
|||
|---|---|---|---|
|
#18+
Хтмл строкой выше. Гм... кажися просветление.... Какого хрена я воткнул <html><head><meta .............></head></html> _ВНУТРЬ_ тэга <body></body>... Спасибо за подсказку :) ЗЫ а какого хрена оно еще и работает? Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2005, 21:40 |
|
||
|
(PHP) Submit формы при Refresh. Как избежать?
|
|||
|---|---|---|---|
|
#18+
Больше похоже на помутнение... Дело в HTTP заголовках, а не в заголовочном тексте страницы - это вде разные вещи.... Прочтите пару раз ссылку... подумайте.. потом опять прочитет... и так, пока не поймете, что ваше высказвание насчет просветления было ошибочным... а потом возьмите и напишите все правильно. ---------------------------------------- Артисты не приехали, приехали цыгане ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2005, 22:17 |
|
||
|
(PHP) Submit формы при Refresh. Как избежать?
|
|||
|---|---|---|---|
|
#18+
vkleНет, так я сделать не могу, потому как в браузер уже отдано начало странички и заголовок уже не катит....А почему в браузер уже отдано начало странички? Это никогда не нужно, исправляйте логику приложения, избавляйтесь от костылей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2005, 22:25 |
|
||
|
(PHP) Submit формы при Refresh. Как избежать?
|
|||
|---|---|---|---|
|
#18+
> А почему в браузер уже отдано начало странички? Попробовал - получилось... Сейчас предполагаю сделать чтоб после показа инфы о выполнении через 5 сек JavaScript запросил страничку заново.... Проверю только завтра. > Дело в HTTP заголовках, а не в заголовочном тексте страницы Да, в это я въехал. Выдача header("Location......") - это _единственный_ способ 100% заставить забыть браузер о том что он когда то передавал уже форму с этой страницы или существуют еще какие то способы? Мета-тэг делает почти то же самое, но браузер помнит все что он недавно с этой формы отсылал (про то что этот тэг отрабатывает там где не должно быть его, это уж совсем отдельная песня) Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2005, 00:30 |
|
||
|
(PHP) Submit формы при Refresh. Как избежать?
|
|||
|---|---|---|---|
|
#18+
Гугл рулит! ;) PHP запрет кэширования ЗЫ на все это у меня ушло не более минуты; неужели так сложно для начала попытаться самому? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2005, 14:04 |
|
||
|
|

start [/forum/topic.php?fid=23&msg=33407086&tid=1477134]: |
0ms |
get settings: |
6ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
171ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 204ms |
| total: | 453ms |

| 0 / 0 |
