поделитесь скриптом. Нужно забанить 10 посетей. в файл закидаю ІР таким образом : 10.0. 10.1. 10.2. 192.168. 172.16. і т.д. Как реализовать бан на РНР. Очень нужно. Помогите.
http://ru.php.net/manual/en/function.ip2long.php http://ru.php.net/manual/en/function.long2ip.php с обычными цифровыми значниями ипов я уже думаю поймёшь как поступить)
Самый простй способ создаем 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
А если надо забанить диапазон ипов?) А если это диапазон большой?) чё каждый ип забивать отдельно?) вы товарищ извращенец)
Я предложил самый примитивный способ, выложил бы лучше, чем замечания делать =) Для бана подсети нужно заносить в тхт в виде: 127.0.0.* а потом сравнивать по регулярному выражению, с условием что * - это любое число в диапе 0-255
Если надо на 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 Code: 127.*.0.1 255.*.*.*
Короче order allow,deny deny from 10.0 deny from 10.1 ... allow from all Это пропиши в .htaccess, ну только вместо многоточия свои подсети. Или через iptables, если юникс на борту, не помню уже, как там, RTFM.