Значит воть... Пишу крайне интересный и, что главное, полезный скрипт. Что именно он делает - озвучу через пару дней, а то сразу кто нить идею сопрет... Короче проблемы такие... 1. Проферка ИПов. Есть файл ip.txt. В нем записано: Code: 127.0.0.1 127.0.0.2 127.0.0.3 127.0.0.4 Как реализовать проверку, содержится ли ИП человека, который ломица на сайт в списке? Понимаю, что это очень просто, но сам понять не могу... PHP: if(ip есть в списке){ echo("Бобруйск прямо по коредору."); } else { echo("Всегда рады вашему визиту!"); }; Кто поможет - буду благодарен. Повторюсь - просьба не орать "Ламер! Тут все просто!". 2. Проверка файла на сайте. Имеем сайт. Пусть будет http://ya.ru/. У него в корне лежит файл preved.html (http://ya.ru/preved.html). Как сделать, чтобы мой пхп скрипт а) проверял наличие данного файла. б) сравнивал его с эталонным (тоесть чтоб содержимое html кода 1 в 1 было с файлом, по которому сверяет скрипт.) По пункту б у меня, честно говоря, идея была только одна: сравнивать контрольные суммы MD5. Но для этого надо получить файл както... Да и если сайтов 1000+, то скачивание и проверка всех файлов стает несколько неудобной... Ну пока все. Есть еще пара вопросов, но с ними еще сам поковыряюсь (не люблю неразобравшись сразу орать "не работает")... Помогите кто нить пожалуйста!
function get_user_ip() {$strRemoteIP=$_SERVER['REMOTE_ADDR'];} Получил ip, теперь записал его в лог, как вариант в бд. Потом сравниваешь каждого зашедшего с базой. Если (..) то (..) иначе (..)
запиши в какуюнить переменную то что вернет file('ip.txt'); и шпарь по циклу проверку на соответствие. про trim() не забудь, а то все проверки вернут false. Alexsize что за бредовая функция? память не экономим PHP: function get_client_ip() { return (empty(@getenv('HTTP_X_FORWARDED_FOR')) ? getenv('REMOTE_ADDR') : getenv('HTTP_X_FORWARDED_FOR'); }
Эмммм... Товарищи... Я наверное тупой, но у меня все сделано так: PHP: <?php $ip = $_SERVER['REMOTE_ADDR']; $entry_line = "$ip\n"; $fp = fopen("ip.txt","a"); fputs($fp, $entry_line); fclose($fp); ?> С этим все нормально... Вы мне полностью пример приведите как это проверять? А то я чет недогоню... А по 2 пункту вообще некаких идей чтоли? Он для меня сейчас главный... С 1 пунктом всетаки проще...
PHP: <?php $ips = file('ip.txt'); foreach($ips as $ip){ if($ip == $_SERVER['REMOTE_ADDR']){ // v bobruysk } } ?> PHP: <?php $f = fopen('ip.txt', 'r'); while(!feof($f)){ if(rtrim(fgets($f)) == $_SERVER['REMOTE_ADDR']){ //v bobruysk } } ?> PHP: <?php $ips = file('ip.txt'); if(array_search($_SERVER['REMOTE_ADDR'], $ips)){ //v bobruysk } ?> выберай что нравится .. PHP: <?php $md5 = md5_file('url.php'); if(md5_file('url.php') == $md5){ echo 'ok'; } ?> это если локальный файл..
GreenBear Огромное спасибо!!! Я примерно так и догадывался... Но чтот сам сформулировать не смог реализацию...
Ну короче еще по хранению инфы в файле вопрос... Файл users.txt Code: pupkin|ya.ru|pupkin@mail.ru|lamer root|linux.org.ru|root@ya.ru|admin dialsoft|dialsoft.info|root@dialsoft.info|coder И имеем скрипт: PHP: ...открываем файл users.txt, читаем все в массив (сепаратор |, все идет в переменную $u[]) if($u[1] == "ya.ru"){ УДАЛЯЕМ СТРОЧКУ ИЗ ФАЙЛА}; Вот как это реализовать я вообще непойму... Ну, чтобы строка определенная удалялась всмысли. Извините если сильно туплю...
ну так же сделай через foreach по строкам.. PHP: <?php $users = file('users.txt'); $f = fopen('users.txt', 'w'); fclose($f); $f = fopen('users.txt' ,'a'); foreach($users as $user){ //tut razbey if($u[1] != 'ya.ru'){ fwrite($f, $user."\n"); } } fclose($f); ?>
Еще есть дело... Сравнение контрольной суммы файла на удаленном сервере с эталонным локальным файлом PHP: <?php $md5 = md5_file('http://example.ru/2.exe'); if(md5_file('2.exe') == $md5){ echo 'Ok'; } else { echo 'Fufel'; }; ?> Вот как сделать, что если файл не найден (любой, хоть локальный, хоть удаленный), то чтоб выводилось "Not found", а не мат пхп на тему отсутствия файла?
PHP: <?php error_reporting(0); $file = '2.exe'; $url = 'example.ru'; $dir = '/'; if (ereg("(404)", Get_contints($url, $dir.$file))) die('remote file not found'); $md5 = md5_file('http://'.$url.$dir.$file); if (!is_file($file)) die('local file not found'); if (md5_file($file) == $md5) echo 'Ok'; else echo 'Fufel'; function Get_contints($hosturl, $dir) { $query = 'GET '.$dir.' HTTP/1.1'."\r\n". 'Host: '.$hosturl."\r\n". 'User-Agent: Mozilla/4.0 (MSIE 6.0; Windows NT 5.1)'."\r\n". 'Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5'."\r\n". 'Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7'."\r\n". 'Keep-Alive: 300'."\r\n". 'Connection: close'."\r\n". 'Cache-Control: max-age=0'."\r\n\r\n"; if ($socket=fsockopen($hosturl, 80, $errno, $errstr, 10)) { fwrite($socket, $query); //while (!feof($socket)) $result .= fgets($socket); //-- FULL $result = fgets($socket); fclose($socket); } return $result; } ?>
если отсутствует то будет ехит.. if (!is_file($file)) die('local file not found'); if (md5_file($file) == $md5) echo 'Ok'; else echo 'Fufel';
PHP: <? if ($str=md5_file('file.txt')) { echo $str; } else { $link="index.php"; header("Location: $link"); } ?> Так еще можно сделать. В случае неудачи у юзера загрузится index.php
_http://programming.su/apache/article/15/ будет полезно Code: # Настройка вывода сообщений о Ошибках (стиль Apache) # # # 1 - текст # ErrorDocument 500 "Серверу пришел крандец # Единственный символ " в начале строки просто обозначает начало текста, он не выводится # # 2 - Локальный редирект #ErrorDocument 404 /missing.html # редирект на локальный URL /missing.html #ErrorDocument 404 /cgi-bin/missing_handler.pl # # Вы можете перенаправлять на скрипт или страницу, использующие SSI # 3 - Редирект на другие сервера #ErrorDocument 402 http://some.other_server.com/subscription_info.html # Примечание - значения переменных, ассоциированных с первоначальным запросом, # в этом случае НЕ будут доступны НО для большого проекта все навсего нун класс.. или отдельный модуль обработки и вывода ошибок зы: пора бы уже хотя бы в конфах апача разбираться