Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Забанить подсеть. (https://forum.antichat.xyz/showthread.php?t=133663)

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 ІР адресов.

Sharky 08.08.2009 12:24

http://ru.php.net/manual/en/function.ip2long.php
http://ru.php.net/manual/en/function.long2ip.php

с обычными цифровыми значниями ипов я уже думаю поймёшь как поступить)

b3 08.08.2009 12:30

Самый простй способ создаем ban.php
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

Цитата:

Сообщение от b3
... Ну а вообще лучше всего почитай про .htaccess

да. расово верно и даже православно.

Sharky 08.08.2009 13:56

Цитата:

Сообщение от b3
Самый простй способ создаем ban.php
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

А если надо забанить диапазон ипов?) А если это диапазон большой?) чё каждый ип забивать отдельно?) вы товарищ извращенец)

b3 08.08.2009 14:52

Я предложил самый примитивный способ, выложил бы лучше, чем замечания делать =)
Для бана подсети нужно заносить в тхт в виде: 127.0.0.* а потом сравнивать по регулярному выражению, с условием что * - это любое число в диапе 0-255

mailbrush 08.08.2009 15:52

Если надо на PHP:
ban.php
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/

fl00der 08.08.2009 19:59

Короче order allow,deny
deny from 10.0
deny from 10.1
...
allow from all
Это пропиши в .htaccess, ну только вместо многоточия свои подсети. Или через iptables, если юникс на борту, не помню уже, как там, RTFM.


Время: 10:43