ФорумПрограммированиеPHP для идиотов → file_get_contents() - VS - CURL

file_get_contents() - VS - CURL

  • TRIAL

    Сообщения: 988 Репутация: N Группа: Джедаи

    Spritz 1 октября 2007 г. 4:34

    Собственно хотелось бы услышать поподробнее об этих функциях, об их плюсах и минусах, кто что, а главное почему, юзает.
    Сам особо никогда не пользовался, но вот недавно стал использовать file_get_…
    Щас глянул на CURL. Чет всё запутанно и непонятно :) Но вроде делает абсолютно то же самое.
    В общем обсуждаем!!!
    from TRIAL with LOVE
  • Patrick

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 1 октября 2007 г. 4:54, спустя 19 минут 59 секунд

    Я CURL юзаю……..
  • vasa_c

    Сообщения: 3127 Репутация: N Группа: в ухо

    Spritz 1 октября 2007 г. 4:57, спустя 3 минуты 15 секунд

    У file_get_contents() всё по минимуму и просто.
    Послать POST запрос через https:// с отслеживанием редиректов и сохранением кук, через неё проблематично.
  • TRIAL

    Сообщения: 988 Репутация: N Группа: Джедаи

    Spritz 1 октября 2007 г. 5:09, спустя 11 минут 57 секунд

    А можно наглядный пример с использованией file_get_… и cURL?
    Нужно получить содержимое странички для дальнейшего разбора. Адрес странички должен быть с параметром (любимым, типа index.php?action=ok)
    Как это будет выглядеть, а как с этим потом работать?

    PS. Как работать с первой функцией знаю, а вот с cURL чет пока не могу понять. Хочется наглядно увидеть :)

    PPS. А еще напишите как настроить cURL. А то чет у себя в php.ini раскоментил но не пашет. Апач перегрузил :) Просто где-то читал что надо еще папки какие то создать и файлы в них.
    from TRIAL with LOVE
  • md5

    Сообщения: 11951 Репутация: N Группа: в ухо

    Spritz 1 октября 2007 г. 6:37, спустя 1 час 27 минут 57 секунд

    для таких каверзных дел юзаю сокеты
    для модных, выкладываю функцию:
      function Send($url, $data = "", $method = "get", $cookies = "")
    {
    $arr = parse_url($url);

    $nn = "\r\n";
    $host = $arr["host"];
    $ref = $arr["scheme"]."//$host";
    $path = $arr["path"];

    if (isset($arr['query'])) $query = $arr["query"];

    if (isset($query) && !empty($query)) $path.="?".$query;

    $request = strtoupper($method)." $path HTTP/1.0".$nn.
    "Referer: $ref".$nn.
    ($cookies ? "Cookie: ".$cookies.$nn : "").
    "Connection: Keep-Alive".$nn.
    "Cache-Control: no-cache".$nn.
    "Content-Type: application/x-www-form-urlencoded".$nn.
    "Content-Length: ".strlen($data).$nn.
    "Host: $host".$nn.
    "Accept: */*".$nn.
    "Accept-Encoding: gzip, deflate".$nn.
    "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MyIE2)".$nn."".$nn.
    $data;

    //echo nl2br($request).&#39;<br /><br /><br /><br />&#39;;
    //exit;

    $fp = fsockopen($host, 80, &amp;$errno, &amp;$errstr, 30);

    //echo &quot;<br><br>socket открыт:&quot;.$fp;

    if(!$fp) { print &quot;$errstr ($errno)<br>\n&quot;; exit; }
    fputs($fp, $request);

    //echo &quot;<br>ответ: &quot;.fgets($fp);

    while(!feof($fp))
    {
    @$reply .= fgets($fp);
    }
    fclose($fp);

    return $reply;
    }


    с помощью неё можно послать get и post запрос с параметрами и с куками
    $data = Send(&quot;http://pyha.ru/login/&quot;, &quot;login=md5&amp;passwd=fuck&amp;submit=1&quot;, &quot;post&quot;, &quot;&quot;);

    последний параметр, как многие уже смогли заметить — туда пихаются куки например: login=md5;password=fuck

    вот

    Trial
    а для твоей страницы так:
    $data = Send(&quot;http://pyha.ru/index.php&quot;, &quot;action=ok&quot;);
    =)
    все умрут, а я изумруд
  • md5

    Сообщения: 11951 Репутация: N Группа: в ухо

    Spritz 1 октября 2007 г. 6:38, спустя 56 секунд

    ps. Курл никогда в жизни не пользовал, простите…
    все умрут, а я изумруд
  • md5

    Сообщения: 11951 Репутация: N Группа: в ухо

    Spritz 1 октября 2007 г. 6:43, спустя 5 минут 10 секунд

    как отловить при всём этом раскладе куки, спросите вы меня??? =))))
      function GetCookies($header)
    {
    $cookie = &quot;&quot;;
    $arr = split(&quot;\r\n&quot;, $header);
    $j = count($arr);

    for( $i=0; $i < ($j-1); $i++)
    {
    if(ereg(&quot;^Set-Cookie:&quot;,$arr[$i]))
    {
    list($cv) = split( &quot;;&quot;, $arr[$i]);
    list($trash, $cv) = split( &quot;:&quot;, $cv);
    list($cname, $cv) = split( &quot;=&quot;, $cv, 2);
    $cookie .= &quot;$cname=&quot;.urlencode($cv).&quot;; &quot;;
    }
    }

    $cookie = url_decode($cookie);

    return $cookie;
    }


    на примере:

    // послали
    $data = Send(&quot;http://pyha.ru/login/&quot;, &quot;login=md5&amp;passwd=fuck&amp;submit=1&quot;, &quot;post&quot;, &quot;&quot;);

    // отловили куки
    $cookies = GetCookies($data);

    // а теперь их можно использовать!
    $data = Send(&quot;http://pyha.ru/closed_page/&quot;, &quot;&quot;, &quot;get&quot;, $cookies);

    всё, теперь ломанулись мутить баттл паук =)))
    все умрут, а я изумруд
  • pasha

    Сообщения: 1048 Репутация: N Группа: Адекваты

    Spritz 1 октября 2007 г. 6:49, спустя 5 минут 32 секунды

    Мутым карму *брахахах*
  • md5

    Сообщения: 11951 Репутация: N Группа: в ухо

    Spritz 1 октября 2007 г. 7:02, спустя 12 минут 55 секунд

    если с помощью этого кода напишешь скрипт, который бы повышал карму, лично выпишу тебе 57 кг кармы
    все умрут, а я изумруд
  • pasha

    Сообщения: 1048 Репутация: N Группа: Адекваты

    Spritz 1 октября 2007 г. 7:09, спустя 6 минут 51 секунду

    В Кг не интересно…есть там денежные бонусы?или просто карма?
  • md5

    Сообщения: 11951 Репутация: N Группа: в ухо

    Spritz 1 октября 2007 г. 7:11, спустя 2 минуты 36 секунд

    делай
    все умрут, а я изумруд
  • TRIAL

    Сообщения: 988 Репутация: N Группа: Джедаи

    Spritz 1 октября 2007 г. 22:18, спустя 15 часов 7 минут 6 секунд

    Вчера лазил по нету, смотрел кто чем пользуется.
    На каком-то сайте писали, что из всех функций, курл самая быстрая, все остальные работают одинаково. Где то в 2 раза дольше. Не знаю на сколько это реально.
    Вобщем щас пытаюсь курл попробывать но не знаю как его установить.
    Кто использует, скинте пожалуйста ссылочку по установке (доходчиво а не так что скачайте и поставте, так уже скачал и ничерта не ставится) или напишите подробно чего откуда качать, куда ставить и где что прописать :)
    from TRIAL with LOVE
  • zaxar

    Сообщения: 33 Репутация: N Группа: Кто попало

    Spritz 1 октября 2007 г. 22:55, спустя 36 минут 33 секунды

    Обычно юзаю file_get_contents, так как он крайне удобен.

    CURL использую для POST-запросов и для SSL. А также, когда нужно послать, например, нужный referrer или user-agent.

    fsockopen не люблю за неудобство пользования, но тем не менее пользуюсь, когда необходимо установить сетевой таймаут, который, почему-то, только в этой функции работает более менее адекватно.
  • vasa_c

    Сообщения: 3127 Репутация: N Группа: в ухо

    Spritz 1 октября 2007 г. 23:38, спустя 43 минуты 15 секунд

    TRIAL, чего качать-то? Это стандартная либа к PHP (к 5-му во всяком случае). Подключается как обычно — расскоментированием строчки в php.ini.
  • AlexB

    Сообщения: 4288 Репутация: N Группа: в ухо

    Spritz 2 октября 2007 г. 1:50, спустя 2 часа 11 минут 33 секунды

    zaxar написал самый грамотный и исчерпывающий ответ, в очередной раз подтверждающий простую истину: &quot;Различные технологии делятся не столько на &quot;плохие&quot; и &quot;хорошие&quot;, сколько на &quot;адекватные задаче&quot; и &quot;неадекватные задаче&quot;&quot;.

Пожалуйста, авторизуйтесь, чтобы написать комментарий!