в скрипте участок массив в масиве содержатся Ip адреса: Так вот ip адресов будет много, как их можно хранить в файле? допустим файл info.dat ---------------------------------------- я так пробывал и потом но так не срабатывает((([/quote]
ну сделал я такой файл info.dat, а как мне сделать чтоб он работал??)) Чтоб масив $bann_array действовал
вот весь код, ip адреса которые забаненые вносятся в масив как реализовать чтоб содержимое масива, ну в общем чтоб ip добавлять в файл а не в скрипт
как нибудь так: PHP: <?php //Открываем файл для чтения $f=fopen("./ip.txt","r") or die ("не могу открыть файл"); //построчное чтение файла while(!feof($f)) { $array[]=fgets($f,255); } foreach ($array as $value) { $ban_array[$value]='bann'; } print_r($ban_array); ?>
спс буду пробывать, но еще вопрос //построчное чтение файла как записывать в файл построчно, у меня все пишет в одну строку
открываешь файл для чтения/записи и записываешь в файл.. Код (Text): $f=fopen("./ip.txt","a+t") or die ("не могу открыть файл"); для построчной записи: Код (Text): fputs($f,"то что надо записать");
PHP: <?php //Открываем файл для чтения $ip2= "220.94.220.60"; //открыть файл $fp=fopen("./ip.txt","a+t"); //что сделать fputs($fp,$ip2."\n"); //закрыть файл fclose($fp); ?>
А сериализацию уже отменили? PHP: file_put_contents($file, serialize($bann)); $bann = deserialize(file_get_contents($file));
Есть ещё один замечательный способ: PHP: <?php return array( 'param' => 'value' ); ?> И загружаем: Код (Text): include_once 'banned.php';
Сериализация в данном случаи самое адекватное и элементарное решение,а так лучше в Бд хранить подобные вещи
в общем парюсь и все парюсь((( содержимое файла ip.dat Друзья помогите пожалуста, уже вторые сутки мудрую, глаза вылазят
Ничего не понимаю. Столько шуму из-за этого: $ban_array = file('ip.dat'); или этого: $ban_array = unserialize(file_get_contents('ip.dat')); ???
Неужели никак такого не сделать??? вот основной скрипт!! Код (Text): <?php /* Сообщение при банне ip */ define("bann_message", "Для вашего IP: %ip% доступ к сайту закрыт."); /* Предупреждение о возможности банна по ip */ define("wrong_message", "Вы предупреждены администратором данного сайта о возможной блокировке вашего IP: %ip% в случае дальнейшего нарушения правил."); /* массив с ip и типом блокировки. в ключе массива IP, в значении тип блокировки */ $bann_array = array( "78.40.176.13"=>"bann", "220.94.220.60"=>"bann", ); /* Функция для почти 100% определения IP адреса посетителя. */ /* Перебирает все возможные переменные с IP. */ function _ip() { if(isset($HTTP_SERVER_VARS)) { if(isset($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"])) { $realip = $HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"]; }elseif(isset($HTTP_SERVER_VARS["HTTP_CLIENT_IP"])) { $realip = $HTTP_SERVER_VARS["HTTP_CLIENT_IP"]; }else{ $realip = $HTTP_SERVER_VARS["REMOTE_ADDR"]; } }else{ if(getenv( 'HTTP_X_FORWARDED_FOR' ) ) { $realip = getenv( 'HTTP_X_FORWARDED_FOR' ); }elseif ( getenv( 'HTTP_CLIENT_IP' ) ) { $realip = getenv( 'HTTP_CLIENT_IP' ); }else { $realip = getenv( 'REMOTE_ADDR' ); } } return $realip; } /* Определяет, что делать с владельцем того или иного ip адреса */ function bann_on_not_to_bann() { global $bann_array; // получаем массив с ip адресами $user_ip = _ip(); // получаем ip /* разбираем массив на ключ и значение */ foreach($bann_array as $ip=>$type) { if ($ip == $user_ip) // проверяем { switch($type) // если ip совпал то смотрим что делать { case "wrong": // предупреждение { echo str_replace("%ip%", $user_ip, wrong_message); // выводим предупреждение break; // выход из switch } case "bann": // блокировка { die(str_replace("%ip%", $user_ip, bann_message)); // Сообщение о том, что доступ закрыт + завершение работы php // break не требуется т.к. дальше уже ничего не выполняется } } } } } /* проверяем владельца ip и блокируем\предупреждаем если это спамер */ bann_on_not_to_bann(); ?> в этом масиве содержатся ip со значением Код (Text): $bann_array = array( "78.40.176.13"=>"bann", "220.94.220.60"=>"bann", ); скрипт работает отлично, только вот как можно хранить список ip в файле, чтоб в масив было чтения из файла ip.dat Подскажите пожалуста что мне вставить СЮДА!?? Код (Text): /* массив с ip и типом блокировки. в ключе массива IP, в значении тип блокировки */ !!!!!СЮДА!!!!! /* Функция для почти 100% определения IP адреса посетителя. */ /* Перебирает все возможные переменные с IP. */ function _ip() Чтобы код работал, файл называется ip.dat, содержисое файла Код (Text): 127.0.0.1 127.0.0.2 127.0.0.3 220.94.220.60 46.98.29.31 Я вас умоляю помогите)))!!!))!))!))
PHP: <?php $bann_array = array(); $f = file('ip.dat'); foreach($f as $ip) { $ip = trim($ip); $bann_array[$ip] = 'bann'; }