информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Сетевые кракеры и правда о деле ЛевинаSpanning Tree Protocol: недокументированное применениеВсе любят мед
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / web building
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
опять таки не ясно, в чем проблема 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] Статус: Незарегистрированный пользователь
<"чистая" ссылка>
1




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


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