информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Spanning Tree Protocol: недокументированное применениеАтака на InternetСтрашный баг в Windows
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Очередное исследование 19 миллиардов... 
 Оптимизация ввода-вывода как инструмент... 
 Зловреды выбирают Lisp и Delphi 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / web building
Имя Пароль
если вы видите этот текст, отключите в настройках форума использование JavaScript
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
опять таки не ясно, в чем проблема 11.07.03 18:10  Число просмотров: 1817
Автор: 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] Статус: Незарегистрированный пользователь
<"чистая" ссылка>
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2025 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach