PHP - Пишем сканер директорий с cURL
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
PHP - Пишем сканер директорий с cURL - 2009-04-26 10:44:48.656666
|
|
|
FriLL
Сообщений: 2539
Оценки: 335
Присоединился: 2007-08-11 17:14:26.703333
|
Сейчас я покажу как можно написать бысрый сканер директорий с использование cURL (http://ru.wikipedia.org/wiki/CURL) Эта технология позволяет делать много чего хорошого и в том числе получать ответ от сервера Итак, ключевой в коде будет сама функция отплавляющая cURL запрос function server_request($link) //$link -адресс хоста { $main = array(); $ch = curl_init(); curl_setopt ($ch, CURLOPT_URL, $link); curl_setopt ($ch, CURLOPT_USERAGENT, 'Opera/9.64 (Windows NT 5.1; U; ru) Presto/2.1.1'); curl_setopt ($ch, CURLOPT_HEADER, 1); curl_setopt ($ch, CURLOPT_NObоdу, 1); curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt ($ch, CURLOPT_NETRC, 1); curl_setopt ($ch, CURLOPT_TIMEOUT, 10); ob_start(); curl_exec ($ch); $stuff = ob_get_contents(); ob_end_clean(); curl_close ($ch); $parts = split("\n",$stuff,2); // в переменной $stuff нам приходят данные которые мы разбиваем в массив используя регулярное в-ие $main = split(" ",$parts[0],3); //делаем это еще раз return $main; // итог $main - массив вида [0] => HTTP/1.1 [1] => 301 [2] => Moved Permanently } Теперь переходим к коду который будет нам выдавать в цикле ответ от сервера для разных директорий $link='localhost'; //хост для скана $f = file("dir.txt"); // функция file() создает массив где каждый элемент - это строка в файле $i = count($f); // считаем кол-во элементов/строк $n=0; echo("<table>"); while($n < $i) //начинаем цикл { $url = "http://".$link."/".$f[$n].""; // $f[$n] - это массив где $n увеличиваеться с каждым проходом цикла на 1, те след строка из файла $s = server_request($url); //используем вышеопесанную функцию if ( $s[1] !== '404') //страницы 404 нам не нужны { echo ("<tr><td>".$url."</td> <td>".$s[1]."</td><td>".$s[2]."</td></tr>"); // вывод ответа в таблице } $n++; } echo("</table>");
|
|
|
RE: PHP - Пишем сканер директорий с cURL - 2009-04-26 11:01:51.663333
|
|
|
horiz
Сообщений: 892
Оценки: 0
Присоединился: 2008-11-03 18:33:09.006666
|
quote:
$parts = split("\n",$stuff,2); // в переменной $stuff нам приходят данные которые мы разбиваем в массив используя регулярное в-ие Это же не регулярное выражение, а простой разделитель. Можно заменить while на for($n=0; $n<count($f); $n++){}. Код будет прозрачней.;) А еще лучше заменить на foreach($f as $value) И еще, у тебя есть строчка echo("</table>");. А где ты открываешь тег </table>?;)
|
|
|
RE: PHP - Пишем сканер директорий с cURL - 2009-04-26 11:05:03.773333
|
|
|
Cep}|{
Сообщений: 1396
Оценки: 0
Присоединился: 2007-06-26 01:11:51.416666
|
quote:
ob_start(); curl_exec ($ch); $stuff = ob_get_contents(); ob_end_clean(); есть опция RETURNTRANSFER, заставляет exec не выводить напрямую.
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$stuff = curl_exec($ch);
|
|
|
RE: PHP - Пишем сканер директорий с cURL - 2009-04-26 11:56:02.330000
|
|
|
FriLL
Сообщений: 2539
Оценки: 335
Присоединился: 2007-08-11 17:14:26.703333
|
quote:
И еще, у тебя есть строчка echo("</table>");. А где ты открываешь тег </table>? в прикрепл файле все норм
|
|
|
RE: PHP - Пишем сканер директорий с cURL - 2009-04-26 14:13:03.170000
|
|
|
magistr_bender
Сообщений: 977
Оценки: 0
Присоединился: 2008-02-22 20:10:21.133333
|
я кажется уже писал тут нечто подобное :) только с поиском по файлам и рекурсией :) но скрипт интересный.. думаю заюзать у себя :))))
|
|
|
|
|