$ip_list = file("ban.txt");
$visitor_ip = $_SERVER['REMOTE_ADDR'];
if(in_array($visitor_ip, $ip_list))
{
die("You are banned from this site!");
}
ban.txt - соответвтенно список ip c переносом строки.
Заранее спасибо всем кто ответит.
Спустя 3 минуты, 52 секунды (20.11.2010 - 19:50) kovaldm написал(а):
Может сначала нужно обработать массив функцией rtrim()?
Спустя 11 секунд (20.11.2010 - 19:50) Lenarfate написал(а):
вообще, по ip банить не тру. у многих динамический ip(например, у меня), либо можно пользовать прокси
Спустя 1 минута, 55 секунд (20.11.2010 - 19:52) zloyrediska написал(а):
kovaldm
А как это сделать?
Lenarfate
Возможно что и не тру, но все же необхоимость именно в такой ф-ции возникла. =/
А как это сделать?
Lenarfate
Возможно что и не тру, но все же необхоимость именно в такой ф-ции возникла. =/
Спустя 12 секунд (20.11.2010 - 19:52) DySprozin написал(а):
потому что к каждому ip (элементу массива $ip_list) добавляется либо "\r\n", либо просто "\n"
нужно прежде перебрать все элементы массива (foreach) и у каждого выполнить операцию:
$ip_list[$i]=str_replace("\r","",str_replace("\n","",$ip_list[$i]));
нужно прежде перебрать все элементы массива (foreach) и у каждого выполнить операцию:
$ip_list[$i]=str_replace("\r","",str_replace("\n","",$ip_list[$i]));
Спустя 2 минуты, 23 секунды (20.11.2010 - 19:55) kovaldm написал(а):
<?php
$ip_list = file("ban.txt");
$visitor_ip = $_SERVER['REMOTE_ADDR'];
$visitor_ip = array_map(rtrim(), $visitor_array);
if(in_array($visitor_ip, $ip_list))
{
die("You are banned from this site!");
}
Спустя 1 минута, 27 секунд (20.11.2010 - 19:56) zloyrediska написал(а):
DySprozin
Это уже интересно, а не ударит ли это по нагрузке а сервер? (порядка 3000 обращиний в секунду) ?
kovaldm
проверил, не помогло =/
Это уже интересно, а не ударит ли это по нагрузке а сервер? (порядка 3000 обращиний в секунду) ?
kovaldm
проверил, не помогло =/
Спустя 2 минуты, 21 секунда (20.11.2010 - 19:59) zloyrediska написал(а):
...
Спустя 44 секунды (20.11.2010 - 19:59) kovaldm написал(а):
Блин, как обычно, невнимательность:
Отвлекся немножко... :rolleyes:
<?php
$ip_list = file("ban.txt");
$visitor_ip = $_SERVER['REMOTE_ADDR'];
$ip_list = array_map(rtrim(), $ip_list);
if(in_array($visitor_ip, $ip_list))
{
die("You are banned from this site!");
}
Отвлекся немножко... :rolleyes:
Спустя 32 секунды (20.11.2010 - 20:00) DySprozin написал(а):
;;Это уже интересно, а не ударит ли это по нагрузке а сервер? (порядка 3000 обращиний в секунду) ?
не думаю (;
ну, как вариант можно так:
не думаю (;
ну, как вариант можно так:
$ip_list = file("ban.txt");
$visitor_ip = $_SERVER['REMOTE_ADDR'];
if(in_array($visitor_ip."\r\n", $ip_list) || in_array($visitor_ip."\n", $ip_list) )
{
die("You are banned from this site!");
}
Спустя 1 минута, 53 секунды (20.11.2010 - 20:02) kovaldm написал(а):
DySprozin
Это тоже самое, только мой вариант побыстрее будет.
Это тоже самое, только мой вариант побыстрее будет.
Спустя 1 минута, 7 секунд (20.11.2010 - 20:03) zloyrediska написал(а):
kovaldm
Не работает опять =/, с вариантом DySprozin - все ок
Не работает опять =/, с вариантом DySprozin - все ок
Спустя 1 минута, 52 секунды (20.11.2010 - 20:05) DySprozin написал(а):
хм.. не знал про array_map, спс (;
Спустя 49 секунд (20.11.2010 - 20:06) DySprozin написал(а):
zloyrediska
а вот так?
а вот так?
<?php
$ip_list = file("ban.txt");
$visitor_ip = $_SERVER['REMOTE_ADDR'];
$ip_list = array_map("rtrim", $ip_list);
if(in_array($visitor_ip, $ip_list))
{
die("You are banned from this site!");
}
?>
Спустя 57 секунд (20.11.2010 - 20:07) LRCenter написал(а):
zloyrediska
Лучше банить по комплексу параметров, вот тут это обсуждали http://phpforum.ru/index.php?showtopic=33979&hl=
Лучше банить по комплексу параметров, вот тут это обсуждали http://phpforum.ru/index.php?showtopic=33979&hl=
Спустя 6 секунд (20.11.2010 - 20:07) kovaldm написал(а):
Как это? :blink: У меня работает. Попробуй так:
<?php
$ip_list = file("ban.txt");
$visitor_ip = $_SERVER['REMOTE_ADDR'];
$ip_list = array_map(rtrim, $ip_list);
if(in_array($visitor_ip, $ip_list))
{
die("You are banned from this site!");
}
Спустя 2 минуты, 3 секунды (20.11.2010 - 20:09) zloyrediska написал(а):
DySprozin
Алелуя! ))))) работает )))
kovaldm
Уже работает )))
Еще такой вопрос возник, а как бы покрасивее поступить с баном по маске 192.168.* например ?
Алелуя! ))))) работает )))
kovaldm
Уже работает )))
Еще такой вопрос возник, а как бы покрасивее поступить с баном по маске 192.168.* например ?
Спустя 1 минута, 9 секунд (20.11.2010 - 20:10) kovaldm написал(а):
Через strpos() или регулярку.
Спустя 51 минута, 53 секунды (20.11.2010 - 21:02) ak167 написал(а):
<?
function getIP() {
if(isset($_SERVER['HTTP_X_REAL_IP'])) return $_SERVER['HTTP_X_REAL_IP'];
if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) return $_SERVER['HTTP_X_FORWARDED_FOR'];
return $_SERVER['REMOTE_ADDR'];
}
$block = array('192.168.0.1', '192.168.0.2', '192.168.0.3');
if (in_array(getIP(), $block)) die('IP Blocked');
?>