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

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

Имеется скрипт, который формирует страничку с формой.
Пользователь что то вводит в поля, давит "Сабмит", на сервере запускается
этот же скрипт, проверяется идентификатор сессии, проверяются переменные,
что то еще делается, далее выдается страничка с информацией о том что все
выполнено нормально, а затем, через 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
(PHP) Submit формы при Refresh. Как избежать?
    #33406944
*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
*
Гость
http://phpclub.ru/faq/ProblemsLocations
...
Рейтинг: 0 / 0
(PHP) Submit формы при Refresh. Как избежать?
    #33407079
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Другими словами, вместо тэга meta http-equiv='Refresh' надо использовать
header(). Нет, так я сделать не могу, потому как в браузер уже отдано начало
странички и заголовок уже не катит.... А используя мета-тэг сразу
показывается страничка, а потом автоматом делается обновление.

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

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

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

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

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

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

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

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

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

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

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

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



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

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


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

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

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


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