/*** Класс проверки и блокировки ip-адреса. */ class BotBlockIp { /*** Время блокировки в секундах. */ const blockSeconds = 60; /** * Интервал времени запросов страниц. */ const intervalSeconds = 1; /** * Количество запросов страницы в интервал времени. */ const intervalTimes = 4; /** * Флаг подключения всегда активных пользователей. */ const isAlwaysActive = true; /** * Флаг подключения всегда заблокированных пользователей. */ const isAlwaysBlock = true; /** * Путь к директории кэширования активных пользователей. */ const pathActive = 'active'; /** * Путь к директории кэширования заблокированных пользователей. */ const pathBlock = 'block'; /** * Флаг абсолютных путей к директориям. */ const pathIsAbsolute = false; /** * Список всегда активных пользователей. */ public static $alwaysActive = array( ); /** * Список всегда заблокированных пользователей. */ public static $alwaysBlock = array( ); /** * Метод проверки ip-адреса на активность и блокировку. */ public static function checkIp() { // Если это поисковый бот, то выходим ничего не делая if(self::is_bot()){ return; } // Получение ip-адреса $ip_address = self::_getIp(); // Пропускаем всегда активных пользователей if (in_array($ip_address, self::$alwaysActive) && self::isAlwaysActive) { return; } // Блокируем всегда заблокированных пользователей if (in_array($ip_address, self::$alwaysBlock) && self::isAlwaysBlock) { header('HTTP/1.0 403 Forbidden'); echo ''; echo ''; echo '
'; echo '';
echo 'Вы заблокированы администрацией ресурса.
';
exit;
}
// Установка путей к директориям
$path_active = self::pathActive;
$path_block = self::pathBlock;
// Приведение путей к директориям к абсолютному виду
if (!self::pathIsAbsolute) {
$path_active = str_replace('\\' , '/', dirname(__FILE__) . '/' . $path_active . '/');
$path_block = str_replace('\\' , '/', dirname(__FILE__) . '/' . $path_block . '/');
}
// Проверка возможности записи в директории
if (!is_writable($path_active)) {
die('Директория кэширования активных пользователей не создана или закрыта для записи.');
}
if (!is_writable($path_block)) {
die('Директория кэширования заблокированных пользователей не создана или закрыта для записи.');
}
// Проверка активных ip-адресов
$is_active = false;
if ($dir = opendir($path_active)) {
while (false !== ($filename = readdir($dir))) {
// Выбирается ip + время активации этого ip
if (preg_match('#^(\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3})_(\d+)$#', $filename, $matches)) {
if ($matches[2] >= time() - self::intervalSeconds) {
if ($matches[1] == $ip_address) {
$times = intval(trim(file_get_contents($path_active . $filename)));
if ($times >= self::intervalTimes - 1) {
touch($path_block . $filename);
unlink($path_active . $filename);
} else {
file_put_contents($path_active . $filename, $times + 1);
}
$is_active = true;
}
} else {
unlink($path_active . $filename);
}
}
}
closedir($dir);
}
// Проверка заблокированных ip-адресов
$is_block = false;
if ($dir = opendir($path_block)) {
while (false !== ($filename = readdir($dir))) {
// Выбирается ip + время блокировки этого ip
if (preg_match('#^(\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3})_(\d+)$#', $filename, $matches)) {
if ($matches[2] >= time() - self::blockSeconds) {
if ($matches[1] == $ip_address) {
$is_block = true;
$time_block = $matches[2] - (time() - self::blockSeconds) + 1;
}
} else {
unlink($path_block . $filename);
}
}
}
closedir($dir);
}
// ip-адрес заблокирован
if ($is_block) {
header('HTTP/1.0 502 Bad Gateway');
echo '';
echo '';
echo '
';
echo 'К сожалению, Вы временно заблокированы, из-за частого запроса страниц сайта.
';
echo 'Вам придется подождать. Через ' . $time_block . ' секунд(ы) Вы будете автоматически разблокированы.';
echo '
Ore lavorative: intorno allorologio
|
Guardare: intorno allorologio
Vrhnika
Indicazioni per luso:
Perdita di peso;
Modulo per il rilascio:
Capsule;
Da consumarsi preferibilmente entro:
2 anni;
Condizioni di archiviazione:
Conservare a temperatura non superiore a 25°C. Tenere fuori dalla portata dei bambini;
Condizioni di vacanza:
Sul bancone;
Volume:
1200 mg;
Importo in un pacchetto:
20 pezzi;
Confezione:
Barattolo di plastica.
Keto Side scontato 50% ti sto già aspettando nel nostro punto vendita - LargeOnion! Offriamo la soluzione più efficace al problema - Keto Side per il prezzo di tutto: 39 €! Acquistare a Vrhnik 🇸🇮 disponibile con spedizione gratuita. Affrettati a effettuare il tuo ordine prodotto per il controllo del peso - Keto Side ancora in magazzino!
Ottieni una consulenza gratuita da parte di un esperto compilando il modulo con i tuoi dati di contatto. I nostri specialisti qualificati ti forniranno informazioni complete sul prodotto e ti aiuteranno a scegliere le condizioni più favorevoli!
Sarai richiamato entro 10-15 minuti
Inserisci il codice di verifica presente sulla confezione per verificare loriginalità dei prodotti.
Siamo fiduciosi che ogni cliente meriti condizioni di acquisto favorevoli, quindi il nostro sito Web offre promozioni regolari e sconti fino al 50% su vari prodotti.
Il nostro obiettivo è rendere il processo di consegna il più semplice e conveniente possibile per i nostri clienti. Lavoriamo solo con servizi di consegna collaudati e affidabili in modo che il tuo ordine ti raggiunga rapidamente e senza problemi.
La qualità dei prodotti sul nostro sito Web è la nostra massima priorità. Lavoriamo solo con fornitori di fiducia per assicurarti di ricevere prodotti della massima qualità.
Siamo orgogliosi che il nostro sito fornisca una consulenza professionale prima di acquistare ogni articolo. Pertanto, offriamo lopportunità di ricevere informazioni qualificate dai nostri specialisti che ti aiuteranno a scegliere il prodotto giusto e risponderanno a tutte le tue domande relative al suo utilizzo.