Просмотр полной версии : Забанить подсеть.
serg_1966
08.08.2009, 11:58
поделитесь скриптом.
Нужно забанить 10 посетей.
в файл закидаю ІР таким образом :
10.0.
10.1.
10.2.
192.168.
172.16.
і т.д.
Как реализовать бан на РНР.
Очень нужно. Помогите.
serg_1966
08.08.2009, 12:04
Или реализовать БАН всех кроме 2 ,3 ІР адресов.
http://ru.php.net/manual/en/function.ip2long.php
http://ru.php.net/manual/en/function.long2ip.php
с обычными цифровыми значниями ипов я уже думаю поймёшь как поступить)
Самый простй способ создаем ban.php
<?php
$ip = file('ban_ip.txt');
$count = count($ip);
for ($i=0;$i < $count;$i++) {
if($ip[trim($i)] == $_SERVER['REMOTE_ADDR'])
{
echo 'BANNED';
exit;
}
}
?>
И инклудим его на каждую страничку где нужно проверять. База IP хранится в ban_ip.txt
Ну а вообще лучше всего почитай про .htaccess
altblitz
08.08.2009, 12:34
... Ну а вообще лучше всего почитай про .htaccess
да. расово верно и даже православно.
Самый простй способ создаем ban.php
<?php
$ip = file('ban_ip.txt');
$count = count($ip);
for ($i=0;$i < $count;$i++) {
if($ip[trim($i)] == $_SERVER['REMOTE_ADDR'])
{
echo 'BANNED';
exit;
}
}
?>
И инклудим его на каждую страничку где нужно проверять. База IP хранится в ban_ip.txt
Ну а вообще лучше всего почитай про .htaccess
А если надо забанить диапазон ипов?) А если это диапазон большой?) чё каждый ип забивать отдельно?) вы товарищ извращенец)
Я предложил самый примитивный способ, выложил бы лучше, чем замечания делать =)
Для бана подсети нужно заносить в тхт в виде: 127.0.0.* а потом сравнивать по регулярному выражению, с условием что * - это любое число в диапе 0-255
mailbrush
08.08.2009, 15:52
Если надо на PHP:
ban.php
<?php
$file = array_map('trim', file('networks.txt')); #загоняем файл в массив
foreach ($file as $expression) #цикл - обработка каждого элемента массива
{
$expression = str_replace('.', '\.', $expression); #подгоняем строку под регулярку
$expression = str_replace('*', '(.*)', $expression); #подгоняем строку под регулярку
if (preg_match('#' . $expression . '#', $_SERVER['REMOTE_ADDR'])) #проверяем айпи по регулярке и в случае удачи
{
header('HTTP/1.1 403 Forbidden'); #отправляем заголовок 403 и
die("<title>BANNED NETWORK</title>\r\n\r\n<h1>Banned network!</h1>"); #выводим, что подсеть забанена
}
}
?>
networks.txt
127.*.0.1
255.*.*.*
Pashkela
08.08.2009, 16:37
в .htaccess лучше, имхо:
http://tools.dynamicdrive.com/userban/
Короче order allow,deny
deny from 10.0
deny from 10.1
...
allow from all
Это пропиши в .htaccess, ну только вместо многоточия свои подсети. Или через iptables, если юникс на борту, не помню уже, как там, RTFM.
serg_1966
09.08.2009, 10:28
Всем спасибо. Розобрался !
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot