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

file_get_contents() - VS - CURL

  • TRIAL

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Spritz 1 октября 2007 г. 17: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).'<br /><br /><br /><br />';
    //exit;

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

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

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

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

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

    return $reply;
    }


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

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

    вот

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

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

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

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

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

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

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

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

    $cookie = url_decode($cookie);

    return $cookie;
    }


    на примере:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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