Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   чекер на существования страницы (https://forum.antichat.xyz/showthread.php?t=64437)

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 код:

<?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 чекал?
PHP код:

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 код:

<?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 код:

<?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($fopenimplode("\n"$good_ip));
    
fclose($fopen);
?>



Время: 05:34