[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Задержка выполнения PHP кода
segazav
Подскажите, не могу придумать. Как сделать задержку в 10 секунд на выполнение PHP кода с выводом сообщения "Зайдите через 10 секунд"?
Сайт постоянно перегружают запросами ботов.
Игорь_Vasinsky
проверяй интервал между запросами к сайту и если интервал не превышен - выводи сообщение. иначе контент.

но так ты всех в очередь поставишь.

собери юзерагенты ботов и для них сделай такой алгоритм

$useragents - массив с ботами

<?php
//старт сессии
session_start()

//если юзер агент в твоём списке
if(in_array($_SERVER['HTTP_USER_AGENT'], $useragents)){

$_SESSION['interval'] = !isset($_SESSION['interval']) ? time() : $_SESSION['interval'];

if(time() - $_SESSION['interval'] < 10){
exit('В очередь ***ины дети!');
}
else{
$_SESSION['interval'] = time();
}
}


_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
segazav
Спасибо, здорово!
А если живой человек или составленный им код вместо одного запроса отправляет 10 запросов?
Как сделать такую же защиту, но с учетом IP адреса и адреса электронной почты?
Чтобы предотвратить много запросов через форму сайта (без капчи и пр.) за один раз одного и того же человека или ...
Игорь_Vasinsky
по IP тоже не вариант - т.к. на одной IP может сидеть полгорода

нужно тогда собирать всё что можно об клиенте

и хранить в ассоц массиве

$client = array(
'ip'=>...,
'os'=>...,
'useragent',
'resolution',
...
...
);



и собирать в сессию (не знаю какой шквал там посетителей)

$_SESSION[interval][] = array(
'client'=>$client,
'time'=>time()
);



далее проверять $client (array_diff по $_SESSION - если отличий нет - то клиент уже был) - смотреть его time


не заморачивайся. обратись к админам, наверника такое проще решается в самом сервере

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.