Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
|
опять таки не ясно, в чем проблема 11.07.03 18:10 Число просмотров: 1708
Автор: tdes <jin> Статус: Member
|
как правильно тут заметили, запретить релоад ты не можешь, яваскрипт, вообще, практически не позволяет менять никакие установки и вмешиваться в процессы на стороне клиента ( ты не можешь считывать из файлов, писать в файлы и тд, за исключением кукиз). Опиши подробней, чего бы ты не хотел, при автоматической отправке форм со старыми параметрами. и юзай, например, onLoad/onUnload.
|
<web building>
|
Можно ли запретить reload 11.07.03 16:24
Автор: VIll Статус: Незарегистрированный пользователь
|
Возник вопрос, можно-ли на javascript запретить reload страницы и как. Смысл действия таков: есть страница (на PHP) надо чтобы управление ее начинкой было только внутренними формами, а то при reload browser отдает старые данные форм.
Спасибо.
|
|
решается так 11.07.03 18:22
Автор: paganoid Статус: Member
|
Насколько я понимаю, у тебя проблема в том, что когда юзер жмёт Reload, форма посылается повторно?
Такая проблема решается не javascript, а в самом скрипте на PHP. Когда тебе приходят данные из формы методом POST, ты после сохранения данных не должен выводить страницу, а должен сделать header ("Location: http://тут_адрес только_что_созданного_сообщения"). Тогда рефреш страницы отошлет юзера на GET, и POSTящиеся данные не будут повторно сохраняться.
|
| |
а если ты хочешь отобразить на странице только что введенные данные ? 11.07.03 21:05
Автор: tdes <jin> Статус: Member Отредактировано 11.07.03 21:06 Количество правок: 1
|
> Насколько я понимаю, у тебя проблема в том, что когда юзер > жмёт Reload, форма посылается повторно? > > Такая проблема решается не javascript, а в самом скрипте на > PHP. Когда тебе приходят данные из формы методом POST, ты > после сохранения данных не должен выводить страницу, а > должен сделать header ("Location: http://тут_адрес > только_что_созданного_сообщения"). Тогда рефреш страницы > отошлет юзера на GET, и POSTящиеся данные не будут повторно > сохраняться.
до header(....) не может быть операторов вывода, или получишь warning:
Warning: Cannot modify header information - headers already sent by (output started .
|
| | |
ну дк, а я что предлагаю? 14.07.03 12:15
Автор: paganoid Статус: Member Отредактировано 14.07.03 12:16 Количество правок: 1
|
> а если ты хочешь отобразить на странице только что введенные данные ? > до header(....) не может быть операторов вывода, или > получишь warning: > Warning: Cannot modify header information - > headers already sent by (output started .
Естественно ничего выводить до хедера нельзя.
Допустим у тебя сообщение с нумером 123 отображается урлой message.php?id=123
Делаем так: идет POST новых данных -> записали в базу с нумером 777 -> редиректим на страницу message.php?id=777 и сразу exit().
Твои вновь введенные данные отображаются и проблема решена.
|
| | | |
http://ua2.php.net/header 15.07.03 10:18
Автор: BioHazard <bio> Статус: Elderman
|
|
|
опять таки не ясно, в чем проблема 11.07.03 18:10
Автор: tdes <jin> Статус: Member
|
как правильно тут заметили, запретить релоад ты не можешь, яваскрипт, вообще, практически не позволяет менять никакие установки и вмешиваться в процессы на стороне клиента ( ты не можешь считывать из файлов, писать в файлы и тд, за исключением кукиз). Опиши подробней, чего бы ты не хотел, при автоматической отправке форм со старыми параметрами. и юзай, например, onLoad/onUnload.
|
| |
Описание ситуации 11.07.03 18:28
Автор: VIll Статус: Незарегистрированный пользователь
|
Ситуация такая:
Есть скрипт PHP, который выдает форму. Пользователь заполняет форму и отсылает на сервер, где данные валятся в файл. Тот же скрипт выдает ту же форму но с небольшими изменениями, для дальнейшего заполнения, пока пользователь жмет кнопки и вводит текст, все нормально, а если он жмет релоад, то browser отдает предыдущую итерацию заполненной формы и все сбивается: в файл ложится еще один комплект данных. Я думал, можно как-нибудь легкой кровью отделаться, запретить reload, но... придется что-то другое думать.
Спасибо
|
| | |
Решение проблемы... 30.07.03 13:02
Автор: DgtlScrm Статус: Member Отредактировано 30.07.03 13:16 Количество правок: 2
|
> Ситуация такая: > Есть скрипт PHP, который выдает форму. Пользователь > заполняет форму и отсылает на сервер, где данные валятся в > файл. Тот же скрипт выдает ту же форму но с небольшими > изменениями, для дальнейшего заполнения, пока пользователь > жмет кнопки и вводит текст, все нормально, а если он жмет > релоад, то browser отдает предыдущую итерацию заполненной > формы и все сбивается: в файл ложится еще один комплект > данных. Я думал, можно как-нибудь легкой кровью отделаться, > запретить reload, но... придется что-то другое думать. > Спасибо
Можешь сделать хитро все изменяемые данные сохраняй в куки, а при загрузке формы проверяй куки на наличие некоторых записей.
Делается это так:
1 ставишь обработчик onBlur на все поля ввода. Он запускает функцию SaveCookie(имя_поля)
2 SaveCookie() записывает изменения в куки
3 Если загружается хтмл с формой, яваскрипт проверяет куки и если находит что-то изменяет соответствующие поля.
4 Когда форма заполнена и все нормально чистишь куки.
Надеюсь код сам сможешь написать =)
но куки могут быть отключены..., хотя это редкость. Тогда можешь сделать так:
ставишь обработчик onBlur(потеря фокуса) на все поля ввода. И просто в IFRAMEы сабмитишь форму с измененным полем например:
http://server.com/value_changed?form_id=номер_формы&поле=значение
DigitalScream resident 'SecurityLevel5'
|
|
нельзя 11.07.03 17:25
Автор: Eugene Статус: Незарегистрированный пользователь
|
ps: при чем тут пхп - это исключительно настройки клиентской части браузера... при чем той части, к которой js никакого отношения не имеет
|
| |
Можно 30.07.03 13:32
Автор: DgtlScrm Статус: Member Отредактировано 30.07.03 13:41 Количество правок: 1
|
> ps: при чем тут пхп - это исключительно настройки > клиентской части браузера... при чем той части, к которой > js никакого отношения не имеет
А может всетаки имееет? Но косвенное =)
Пример для Internet Explorer:
<script>
//Coded by DigitalScream
function DisableReload()
{
alert('Reload...');
}
document.location.reload=DisableReload;
document.location.reload();
</script>
---
Этот способ не отключает перегрузку, зато позволяет вовремя среагировать при попытке перезагрузить форму из JavaScript.
DigitalScream resident 'SecurityLevel5'
|
| | |
а смысл? 30.07.03 18:13
Автор: Eugene Статус: Незарегистрированный пользователь
|
некоторые браузеры обладают поддержкой наборов объектов, характерных лишь для них, можно написать свой браузер, который в модуле обработки JS будет, грубо говоря, дизэйблить кнопку релоад, но опять-таки - это не выход.
тут проблема в алгоритмике программной части сайта. пусть ставит флаг, определяющий - первая ли это загрузка страницы или же нет. вобщем привязка к браузеру - не лучший выход
|
| | | |
а смысл? 30.07.03 20:50
Автор: DgtlScrm Статус: Member
|
Ну понимаешь, привязка не выход. Да это так, но и можно предположить, что пользователь сидит в Opera/IE/Mozila/Netscape а не в Internet Super Browser v0.0000001 (underground edition) =)
Создавая флаг ты можешь предотвратить повторное сохранение формы на сервере, но не уберечь данные пользователя(те которые он ввел до прегрузки странички)
Вот что я сказал по этому поводу:
http://bugtraq.ru/cgi-bin/forum.mcgi?type=sb&b=19&m=84045
Если ты щитаешь, что специфичесские функции использовать не стоит, тогда можно в том, что я написал место обработчика onBlur использовать чтото более стандартное, например onKeyDown. Вариаций много. И мои решения - это чисто мое субьективное мнение, пришедшее с опытом (во как сказал ;) )
DigitalScream resident 'SecurityLevel5'
|
| | |
ага.. чел отключает жабу и скрипт отдыхает... 30.07.03 15:54
Автор: ZaDNiCa <indeed ZaDNiCa> Статус: Elderman
|
|
| | | |
ага.. чел отдыхает пожизни... 30.07.03 17:56
Автор: DgtlScrm Статус: Member
|
А чел отключает графику и отдыхает...
А чел отключает cookie и отдыхает...
Он может отключить все что угодно, но не забывайте тему поста. Все делается для этого же пользователя и если он отключает чтото это только ему во вред =)
Тема - как обезопасить пользевателя если он пол часа заполняет форму, а потом случайно перегружает страничку, данные не потерялись и не дошли дважда к сервачку (как я ее понял). Так что он может отключать... ему же хуже ;)
|
| | |
i bystro vyklu4it' sql server, 4tob ne zapisat' dublirujushuu infu :)) 30.07.03 15:17
Автор: des[@work] Статус: Незарегистрированный пользователь
|
|
|
|