Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Обновление страницы после отправки формы 21.08.04 00:32 Число просмотров: 4692
Автор: Heller <Heller> Статус: Elderman
|
Проблема такая: у меня на сервере достаточно большой поток комментариев и обычно пользователь сразу после отправки сообщения жмёт кнопку "Обновить" дабы посмотреть что там ещё кто написал. Что-то вроде чата получается. Но, браузер выводит пользователю вопрос "Повторить отправку формы?" и это не хорошо. Что бы с этим бороться, я в выводимой CGI странице прописываю <body onload='javascript:location.href="URI";'>. Рефреш тут не поможет, так как опять же будет вопрос об отправке формы. Однако у моего способа есть серьёзный недостаток - кнопка назад не работает, а она при моей организации сайта очень нужна (на главной лежат все новые поступления, а зажать shift для просмотра не все умеют). Да и тормозит такой способ - браузер разрывает соединение и для обновления страницы после поста посылает запрос ещё раз.
По совету dl использовал HTTP-заголовок "Location", но это тоже не помогло. На уровне протокола всё проходит как надо - как появляется директива "Location" браузер GET'ом запрашивает требуемую страницу, однако при нажатии на "Обновить" опять вылезает вопрос. В общем случае указанный способ работает, но не у меня, так как сама организация скрипта достаточно мудрёная. А именно:
Сам скрипт называется index.cgi и в .htaccess фигурирует в DirectoryIndex. Адрес до какой-то конкретной статьи выглядит как .../?n, где n - некоторое число. Скрипт if'ом разделён на две части - для запросов GET и POST. В случае GET он просто выводит страницу со статьёй, в которой имеется форма отправки комментария, у которой "ACTION=#". Менять ACTION я не могу опять же из-за идиотской организации - форма выводится не из CGI, а из файла со статьёй (комментарии дописываются в конец файла после формы). Таким образом, браузер отправляет комментарий по адресу .../?n#, а решетка игнорируется (единственный положительный момент во всей истории). В случае POST выводится то что я уже описывал - рефреш.
Вот, в общем-то, и всё. Менять организацию сервера мне нельзя - слишком много контента накопилось, так что придётся как-то плясать от того что есть. Сам, конечно, понимаю, что понаставил себе граблей - но что делать. Не думал что сайт быстро станет известным. Надеялся, что до его плотного заселения пользователями успею сделать всё по-нормальному. Блин.
Заранее благодарен.
|
- Обновление страницы после отправки формы - Heller 21.08.04 00:32 [4692]
|
|
|