Запрет на обновление страницы

Статус
В этой теме нельзя размещать новые ответы.

irk

Постоялец
Регистрация
18 Май 2009
Сообщения
91
Реакции
2
Ребят, может вопрос нубский, но все же... Как запретить юзеру часто обновлять страницу по F5, Ctrl+R или любым другим образом?
Или ограничить число обновлений страницы на сессию? Просто трафик слишком большой идет, проблема в том, что данные не кэшируются..

Например после 3-х обновлений - hacking attempt...или что то типо того
 
Нашел на одном сайте.
PHP:
<html>
<head>
</head>
<body onLoad="if(C1.checked==true){document.write('<b>');alert('Обновление страницы запрещено!');window.close()}else{C1.checked=true}">
<div style="position: absolute; left: -100px">
<input type="checkbox" name="C1">
</div>
Страница
</body>
</html>

Работает так:

помещаем в body чекбокс без галочки <input type="checkbox" name="C1"> и делаем его невидимым <div style="position: absolute; left: -100px">

body onLoad - при загрузке страницы проверяем стоит ли галочка. Если стоит, значит выполняем функцию (кому какая нужна. Мне в данном случае достаточно очистить документ, вывести сообщение о запрете и закрыть окно), если не стоит, значит ставим. Естественно при первом запуске галочки нет. Но при загрузке страницы она поставится. Если мы обновим страницу любым способом (что ВАЖНО!), окно закроется.

Можно конечно что-нибудь еще придумать (вместо чекбокса). Я проверял только на IE. Все работает!
 
  • Нравится
Реакции: irk
спасибо, проверил..но мне не помогло :( еще есть варианты?
 
Можно попробовать использовать событие onBeforeUnload:
<body onBeforeUnload="return false;">
Тогда при закрытии страницы будет выводиться диалог с вопросом,
а действительно ли ее надо закрывать.
 
  • Нравится
Реакции: irk
Мне кажется, нельзя запретить обновление на стороне пользователя, ведь это делается броузером, как на него повлияешь? Тем более, я могу открыть 10 закладок с одной страницей и их обновлять.
Если и делать, то на стороне сервера, вести лог обращений по сессии, если с последнего обращения прошло меньше заданного времени, то просто выдавать ошибку и все.
Так делает, например, нуллед при поиске, если отправлять запросы слишком часто.
Ну и чистить таблицу с логами не забывать.
 
  • Нравится
Реакции: irk
я так понимаю что б не грузило сервер. можно кешировать страницы по УРЛу и по идентификатору пользователя. F5 - и пользователь получает старую страницу... если таймстамп старый (более 10 минут, к примеру) значит можно сгенерить новую страницу.
 
  • Нравится
Реакции: irk
Решения на javascript не помогут, так как его всегда можно отключить.
PHP тоже не справиться с этой задачей.
irk, тебе нужно кавырять свой Апач и его модули. По моему был вроде модуль для таких целей...
 
  • Нравится
Реакции: irk
Сделал для себя вывод - проще всего прикрутить кэширование! Всем большое спасибо!
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху