/*** Класс проверки и блокировки 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 '
Çalışma modu: 7/24
|
başvuruların kaydı: saat
Koblenz
Üretici firma:
Handel LLC;
Kullanım endikasyonları:
Güç için;
Tahliye formu:
Efervesan tabletler;
Son kullanma tarihi:
2 yıl;
Depolama koşulları:
25C`yi geçmeyen bir sıcaklıkta saklayın. Çocukların erişemeyeceği yerlerde saklayın;
Tatil koşulları:
Doktor reçetesi olmadan;
Bir paketteki miktar:
10 adet.
Uzmanımızın sizinle iletişim kurabilmesi için bilgilerinizi bırakın. Bu ürün hakkında ücretsiz danışmanlık alacaksınız ve ayrıca benzersiz promosyon tekliflerinden haberdar olacaksınız!
içinde sizi geri arayacağız 10 dakika
Ürünün orijinalliğini doğrulamak için DAT kodunu girin.
Web sitemizden satın alırken, maksimum faydayı alacağınızdan emin olabilirsiniz - fiyatların tüm müşterilerimiz için uygun olmasını sağlıyoruz.
Sitemizden alışveriş yaptığınızda sadece en hızlı ve en güvenilir kargo seçeneklerini sağladığımızdan emin olabilirsiniz. Siparişinizin en kısa sürede ve kusursuz bir şekilde elinize geçmesini sağlıyoruz.
Önceliğimiz müşteri güveni. Web sitemizdeki yüksek kaliteli ürünler, mağazamızla güvenli ve kolay etkileşim ve en iyi satın alma öncesi danışmanlık hizmeti sayesinde oluşturulmuştur.
Uzmanlarımız, bu ürünlerin uygulama alanında profesyonel bilgiye sahiptir ve etkileri, yan etkileri, kontrendikasyonları ve diğer önemli yönleriyle ilgili her türlü soruyu yanıtlamaya hazırdırlar. Ayrıca, benzer ürünlerin seçimi konusunda tavsiyelerde bulunabiliriz.