Функция получения страницы 2 способа

Тема в разделе ".:: Готовые решения", создана пользователем t0wer, 4 сен 2009.

Статус темы:
Закрыта.
  1. t0wer

    t0wer BlackHerald

    Регистр.:
    24 июн 2008
    Сообщения:
    733
    Симпатии:
    422
    1) получаем страницу c использованием curl
    PHP:
    <?php
    //mr.The

    set_time_limit(0);
    ob_implicit_flush ();
     
    /**
    Функция получения страницы с использованием курла
    **/
    function get_page($url,$post='',$ref='',$cookie='',$ua="Opera 9.64 (compatible; MSIE 6.0; Windows NT 5.1; ru)",$proxy='') {
        
    $ch curl_init();
     
        
    curl_setopt($chCURLOPT_URL,$url);
        
    curl_setopt($chCURLOPT_USERAGENT,$ua);
        
    curl_setopt($chCURLOPT_REFERER,$ref);
     
        
    curl_setopt($chCURLOPT_PROXY $proxy);
     
        if(
    $post!==''){
            
    curl_setopt($chCURLOPT_POST1);
            
    curl_setopt($chCURLOPT_POSTFIELDS$post);
        }
     
        
    $headers [] = "Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1";
        
    $headers [] = "Accept-Language: ru,en;q=0.9,ru-RU;q=0.8";
        
    $headers [] = "Connection: close";
        
    $headers [] = "Cache-Control: no-store, no-cache, must-revalidate";
     
        
    curl_setopt($chCURLOPT_HTTPHEADER$headers);
     
        
    curl_setopt($chCURLOPT_HEADER1); // тут лучше поставить 0, если куки не нужны
        
    curl_setopt($chCURLOPT_FAILONERROR1);
        
    curl_setopt($chCURLOPT_FOLLOWLOCATION1);
        @
    curl_setopt($chCURLOPT_COOKIE$cookie);
        
    curl_setopt($chCURLOPT_RETURNTRANSFER,1);
        
    curl_setopt($chCURLOPT_TIMEOUT20);
        
    curl_setopt($chCURLOPT_CONNECTTIMEOUT20);
        
    $result curl_exec($ch);
        
    curl_close($ch);
        if(
    $result)return $result; else    return false;
    }
     
    function 
    get_cookie($page) { // и бонус, для парсинга кукисов
        
    if(preg_match("|Set-Cookie: (.*)\n|Uis",$page,$rnd)) return $rnd[1];
    else return 
    false;
    }
    ?>
    2) получаем страницу c использованием сокетов
    PHP:
    <?php
    //mr.The (C)

    set_time_limit(0);
    ob_implicit_flush ();
     
    /**
    Функция получения страницы с использованием сокетов
    **/
    ffunction get_page($site,$page,$isheaders=false,$ua='Opera 9.27 (compatible; MSIE 6.0; Windows NT 5.1; ru)',$ref='',$cookie='',$post='')
    {
    $page=trim($page);
    $site=trim($site);
    $socket fsockopen($site80$errno$errstr15);
    if (
    $socket){
     
        if (
    $post!=''){
            
    $send  "POST $page HTTP/1.0\r\n"
            
    $send .= "Content-Length: "strlen($post) ."\r\n";
            
    $send .= "Content-Type: application/x-www-form-urlencoded; charset=utf-8\r\n";    
        }  else 
    $send  "GET $page HTTP/1.0\r\n";
        
    $send .= "User-Agent: $ua\r\n";
        
    $send .= "Host: $site\r\n";
        
    $send .= "Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1\r\n";
        if(
    $ref!=''$send .= "Referer: $ref\r\n";
        if(
    $cookie!=''){
            
    $send .= "Cookie: $cookie\r\n";
            
    $send .= 'Cookie2: $Version=1'."\r\n";
        }
        
    $send .= "Accept-Language: ru,en;q=0.9,ru-RU;q=0.8\r\n";
        
    $send .= "Connection: close\r\n\r\n".$post;
      
        if(
    fputs($socket,$send)) { 
            if(!
    $isheaders) while(fgets($socket,1024)!="\r\n" && !feof($socket));
            
    $he="";
            while(!
    feof($socket)) $he.=fread($socket,10240);
        };
        
    fclose($socket);
    }
    return 
    $he;
    };
    ?>
     
    beldvd и valentinus-gvr нравится это.
Статус темы:
Закрыта.