Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   как посчитать/узнать количество обновлений страницы (https://javascript.ru/forum/misc/34489-kak-poschitat-uznat-kolichestvo-obnovlenijj-stranicy.html)

cOAPerator 07.01.2013 08:44

как посчитать/узнать количество обновлений страницы
 
Всем привет!
надо сделать защиту от "дурака":
если в течение допустим минуты, юзверь любым способом(F5, ctrl+r, через ПКМ) обновил страницу более 5 раз, надо его вежливо послать на страничку с текстом, что нельзя так много раз обновлять страничку.

собственно вопрос, как узнать, была ли обновлена страница?

Amphiluke 07.01.2013 10:12

При загрузке страницы записывать текущее время и счетчик в cookie/localStorage. Следующий раз сравнивать с ранее записанным.
А вообще, обычно не принято указывать пользователю, можно или нет ему обновлять страницу и т.д.: это его исключительное право.

cOAPerator 07.01.2013 10:29

Цитата:

Сообщение от Amphiluke (Сообщение 225781)
При загрузке страницы записывать текущее время и счетчик в cookie/localStorage. Следующий раз сравнивать с ранее записанным.
А вообще, обычно не принято указывать пользователю, можно или нет ему обновлять страницу и т.д.: это его исключительное право.

точно! как я сам не сообразил. но тогда уж лучше в SessionStorage? не?

я знаю что не принято, но полудурков хватает, которые фигней маются. я для примера написал 5 раз - это конечно мало, так то конечно не менее 20 ставить.

Amphiluke 07.01.2013 10:30

Цитата:

Сообщение от cOAPerator
но тогда уж лучше в SessionStorage? не?

Да, конечно.

danik.js 07.01.2013 11:36

Вообще, такие вещи лучше на стороне сервера делать. Клиентские ограничения легко обходятся (если это важно)

cOAPerator 07.01.2013 12:32

да можно, но это не критично

Deff 07.01.2013 13:58

Цитата:

Сообщение от Amphiluke
При загрузке страницы записывать текущее время и счетчик в cookie/localStorage. Следующий раз сравнивать с ранее записанным.

Не подходит - к примеру он вертаецо периодически на главную.

Проще всего счетчик +время + адрес записывать в в window.name и обнулять при сходе с предыдущего адреса на новый,
Хотя ДДос делатся не руками, и с отключенными скриптами

cOAPerator 07.01.2013 14:24

Цитата:

Сообщение от Deff (Сообщение 225792)
Проще всего счетчик +время + адрес записывать в в window.name и обнулять при сходе с предыдущего адреса на новый,
Хотя ДДос делатся не руками, и с отключенными скриптами

ну от ДДос это не смасет, это я знаю, а от идиота держащего нажатой клавишу F5 вполне)

а зачем в window.name записывать? это же имя страницы вроде...

Deff 07.01.2013 16:51

<script type="text/javascript">
var d=new Date().getTime();
var a=document.URL;
var c=window.name;
N_max = 12 //максимальное число рефрешов страницы подряд за время TimeMin
TimeMin = 60000;//Время действия условия
var d0=d;
var i=1;
if(c!=''){var arr=c.split(",");
  if(arr.length==4&&arr[2]==a){i=parseInt(arr[3])+1;
//alert(i)
  }  
   else window.name=(d+","+d0+","+a+","+1);
}  else window.name=(d+","+d0+","+a+","+1);

if(i>1){d0=parseInt(window.name.split(",")[1])}
if(isNaN(i)||isNaN(d0)){i=1;d0=d;}
//alert(window.name.split(",")[1])
if( i >=N_max){
    if(d-d0<= (TimeMin/N_max)*i){alert('Хорош обновлять страницу!!!');window.name='';window.location="http://qps.ru/H7rqf"}
    window.name='';d0=d;i=1;
}
window.name=(d+","+d0+","+a+","+i);
//alert(window.name);
</script>


Часовой пояс GMT +3, время: 00:06.