чекер на существования страницы

Discussion in 'PHP' started by noisia, 15 Mar 2008.

  1. noisia

    noisia Elder - Старейшина

    Joined:
    13 Mar 2007
    Messages:
    20
    Likes Received:
    10
    Reputations:
    0
    Помоги пожалуйста, нужен чекер где бы я мог загружать список сайтов в таком виде
    site1.com/test.php
    site2.com/test.php
    site3.com/test.php
    и он определял где есть файл test.php и записывал валидные в отдельный файл.
     
  2. NOmeR1

    NOmeR1 Everybody lies

    Joined:
    2 Jun 2006
    Messages:
    1,068
    Likes Received:
    783
    Reputations:
    213
    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);
    ?>
     
  3. noisia

    noisia Elder - Старейшина

    Joined:
    13 Mar 2007
    Messages:
    20
    Likes Received:
    10
    Reputations:
    0
    спасибо, а можно что-бы проверяющий список тоже был в тхт файле т.к. ссылок много?
     
  4. Piflit

    Piflit Banned

    Joined:
    11 Aug 2006
    Messages:
    1,249
    Likes Received:
    585
    Reputations:
    31
    вместо
    $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'));
     
  5. noisia

    noisia Elder - Старейшина

    Joined:
    13 Mar 2007
    Messages:
    20
    Likes Received:
    10
    Reputations:
    0
    сделал, только не работает выводит ошибки на каждую строку
    Это выводит когда скрипт есть:
    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


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

    NOmeR1 Everybody lies

    Joined:
    2 Jun 2006
    Messages:
    1,068
    Likes Received:
    783
    Reputations:
    213
    $spisok = explode("\n", file_get_contents('file.txt'));
    пиши
     
  7. noisia

    noisia Elder - Старейшина

    Joined:
    13 Mar 2007
    Messages:
    20
    Likes Received:
    10
    Reputations:
    0
    все-равно валид не записывает
    в good_spisok.txt заносить только одно слово, Array
    :(
     
  8. NOmeR1

    NOmeR1 Everybody lies

    Joined:
    2 Jun 2006
    Messages:
    1,068
    Likes Received:
    783
    Reputations:
    213
    забыл)) замени
    Code:
    fwrite($fopen, $new_spisok);
    на
    Code:
    fwrite($fopen, implode("\n", $new_spisok));
     
  9. Дюша

    Дюша Banned

    Joined:
    9 Dec 2007
    Messages:
    160
    Likes Received:
    77
    Reputations:
    -13
    А можно чтоб не вбивать ссылки а по диапазону ip чекал?
     
  10. D Mak

    D Mak Elder - Старейшина

    Joined:
    23 Jun 2007
    Messages:
    136
    Likes Received:
    27
    Reputations:
    0
    PHP:
    for($i=1$i<255;$i++) 
    if(
    file_get_contents("http://*.*.*.".$i."/test.php")) 
     
    $new_spisok[] = "http://*.*.*.".$i."/test.php";
     
  11. Дюша

    Дюша Banned

    Joined:
    9 Dec 2007
    Messages:
    160
    Likes Received:
    77
    Reputations:
    -13
    спс
     
  12. Дюша

    Дюша Banned

    Joined:
    9 Dec 2007
    Messages:
    160
    Likes Received:
    77
    Reputations:
    -13
    Помогите поставить таймаут чека на хост, если его не существует это затягиваться на долго :(

    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); 
    ?>
     
  13. NOmeR1

    NOmeR1 Everybody lies

    Joined:
    2 Jun 2006
    Messages:
    1,068
    Likes Received:
    783
    Reputations:
    213
    Ну во первых
    Code:
    for($i=1; $i<256;$i++)
    Во-вторых, если страницы index.php на данном ip нет - не факт, что ip не существует.
    В-третьих, 255 раз проверять - это ооочень долго, поэтому и глючит.
    В-четвёртых, замени строчку с циклом и fwrite на
    Code:
    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);
    ?>