PDA

Просмотр полной версии : чекер на существования страницы


noisia
16.03.2008, 00:22
Помоги пожалуйста, нужен чекер где бы я мог загружать список сайтов в таком виде
site1.com/test.php
site2.com/test.php
site3.com/test.php
и он определял где есть файл test.php и записывал валидные в отдельный файл.

NOmeR1
16.03.2008, 10:57
<?php
// {
$spisok = array(
'http://site1.com/test.php',
'http://site2.com/test.php',
'http://site3.com/test.php'
);
$valid_file = 'good_spisok.txt';
$mode = 1; //1 = не очищать файл $valid_file, а добавлять в него новый ссылки, удаляя повторы.
//2 = очищать файл $valid_file и добавлять ссылки, получившиеся при новом сканировании
// }
$new_spisok = array();
foreach($spisok as $url) {
if(file_get_contents($url)) {
$new_spisok[] = $url;
}
}
if($mode == 1) {
$new_spisok = array_unique(array_merge(explode("\n", file_get_contents($valid_file)), $new_spisok));
}
$fopen = fopen($valid_file, 'w');
fwrite($fopen, $new_spisok);
fclose($fopen);
?>

noisia
16.03.2008, 12:40
спасибо, а можно что-бы проверяющий список тоже был в тхт файле т.к. ссылок много?

Piflit
16.03.2008, 12:43
вместо
$spisok = array(
'http://site1.com/test.php',
'http://site2.com/test.php',
'http://site3.com/test.php'
);

пропиши

$spisok = file('file.txt');
или
$spisok = explode("\n", file_get_contents('file.txt'));

noisia
16.03.2008, 12:55
сделал, только не работает выводит ошибки на каждую строку
Это выводит когда скрипт есть:
Warning: file_get_contents(http://adddres.com/test.php ) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in /home/kosmik/domains/hollymarta.com/public_html/ftp/check.php on line 10
Это когда нету даж:
Warning: file_get_contents(http://address.com/test.php ) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.0 404 Not Found in /home/kosmik/domains/hollymarta.com/public_html/ftp/check.php on line 10


Валид некуда незаписывает:(

NOmeR1
16.03.2008, 13:14
$spisok = explode("\n", file_get_contents('file.txt'));
пиши

noisia
16.03.2008, 13:36
все-равно валид не записывает
в good_spisok.txt заносить только одно слово, Array
:(

NOmeR1
16.03.2008, 14:43
забыл)) замени
fwrite($fopen, $new_spisok);
на
fwrite($fopen, implode("\n", $new_spisok));

Дюша
16.03.2008, 15:21
А можно чтоб не вбивать ссылки а по диапазону ip чекал?

D Mak
16.03.2008, 15:46
А можно чтоб не вбивать ссылки а по диапазону ip чекал?
for($i=1; $i<255;$i++)
if(file_get_contents("http://*.*.*.".$i."/test.php"))
$new_spisok[] = "http://*.*.*.".$i."/test.php";

Дюша
16.03.2008, 15:48
спс

Дюша
16.03.2008, 17:02
Помогите поставить таймаут чека на хост, если его не существует это затягиваться на долго :(

<?php
$valid_file = 'good_spisok.txt';
$new_spisok = array();
for($i=1; $i<255;$i++)
if(file_get_contents("http://58.211.53.".$i."/index.php"))
$new_spisok[] = "http://58.211.53.".$i."/index.php";
$fp = fopen($valid_file, 'w');
for($i=0; $i<count($new_spisok); $i++) fwrite($fp, $new_spisok[$i]);
fclose($fp);
?>

NOmeR1
16.03.2008, 19:32
Ну во первых
for($i=1; $i<256;$i++)
Во-вторых, если страницы index.php на данном ip нет - не факт, что ip не существует.
В-третьих, 255 раз проверять - это ооочень долго, поэтому и глючит.
В-четвёртых, замени строчку с циклом и fwrite на
fwrite($fp, implode("\n", $new_spisok));
Да и вообще здесь file_get_contents совсем не подходит.
Попробуй что-нибудь типо
<?php
// {
$ip = '192.168.100.(0-255)';
$port = 8080;
$valid_file = 'good_spisok.txt';
$timeout = 5; // sec
// }
$good_ip = array();
preg_match('~([0-9]+\.[0-9]+\.[0-9]+\.)\(([0-9]+)-([0-9]+)\)~', $ip, $regs);
for($i=$regs[2];$i<=$regs[3];$i++) {
$nIP = $regs[1].$i;
$fp = fsockopen($nIP, $port, $errno, $errstr, $timeout);
if($fp) {
$good_ip[] = $nIP;
}
fclose($fp);
}
$fopen = fopen($valid_file, 'w');
fwrite($fopen, implode("\n", $good_ip));
fclose($fopen);
?>