Инструменты пользователя

Инструменты сайта


php_curl

Назад

Введение

Библиотека CURL (Client URLs) была разработана Даниелом Стенбергом (Daniel Stenberg) в 1998 году как утилита, работающая из командной строки. Библиотека, позволяет передавать файлы на удаленный компьютер, используя множество Интернет протоколов. Она имеет очень гибкую настройку и позволяют выполнить практически любой удаленный запрос.

CURL поддерживает протоколы HTTP, HTTPS, FTP, FTPS, DICT, TELNET, LDAP, FILE, и GOPHER, так же как HTTP-post, HTTP-put, cookies, FTP-закачкe, продолжение прерванной передачи файлов, пароли, номера портов, сертификаты SSL, Kerberos и прокси.

Используя CURL, web-сервер может выступать полноценным клиентом любого основанного на HTTP протоколе сервисе, к примеру: XML-RPC, SOAP, или WebDAV. В общем виде использование библиотеки сводиться к четырем шагам:

  • Создание ресурса CURL c помощью функции curl_init.
  • Установка параметров c помощью функции curl_setopt.
  • Выполнение запроса c помощью функции curl_exec.
  • Освобождение ресурса CURL c помощью функции curl_close.

Опции

  • CURLOPT_URL - URL, с которым мы будем работать в текущем сеансе cURL можно передавать и GET.
  • CURLOPT_RETURNTRANSFER - опция позволяет настроить тип вывода ответа от сервера: выводить сразу в браузер (значение false) или же возвращать ответ (значение true) к примеру в перемену.
    $curl = curl_init();
    curl_setopt($curl,CURLOPT_URL,'http://www.site.com');
    curl_setopt($curl,CURLOPT_RETURNTRANSFER,false);
    curl_exec($curl);
    curl_close($curl);
    ------------------
    $curl = curl_init();
    curl_setopt($curl,CURLOPT_URL,'http://www.site.com');
    curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
    $out = curl_exec($curl);
    echo $out;
    curl_close($curl);
  • CURLOPT_NOBODY - опция позволяет чтобы в ответ не входило содержимое самого документа.
  • CURLOPT_HEADER - опция позволяет включать в ответ от сервера его HTTP-заголовки.
  • CURLOPT_FOLLOWLOCATION - опция позволяет включать переход по редиректам.
  • CURLOPT_TIMEOUT - параметр который содержит максимальное время в секундах, которое вы отводите для работы CURL-функций.
    $curl = curl_init();
    curl_setopt($curl,CURLOPT_URL,'http://myrusakov.ru');
    curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
    curl_setopt($curl,CURLOPT_NOBODY,true); // Выключить вывод содержимое сайта
держимое сайта
    curl_setopt//Включить вывод html заголовок
ключить вывод html заголов//TIMEOUT
url_setopt($curl, CURLOPT_TIMEOUT, 3);   //TIMEOUT
    //Переходим по редиректам
_FOLLOWLOCATION, true);  //Переходим по редиректа
  • CURLOPT_POST - опция включает передачу данных на сервер методом POST
  • CURLOPT_POSTFIELDS - опция содержится строку с передаваемыми данными POST запроса
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, 'http://localhost/test/test.php?s=10'); // Отправляем GET['s']
    curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
    curl_setopt($curl, CURLOPT_POST, true);
    curl_setopt($curl, CURLOPT_POSTFIELDS, "a=4&b=7"); //Отправляем POST['a'] и POST['b']
    $out = curl_exec($curl);
    echo $out;
    curl_close($curl);
  • CURLOPT_COOKIE опция содержится строку и передает данные в куки
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, 'http://localhost/test/test.php');
    curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
    curl_setopt($curl, CURLOPT_COOKIE, "a=6;b=5");
    $out = curl_exec($curl);
    echo $out;
    curl_close($curl);
  • CURLOPT_REFERER Подделываем заголовок REFERER одержащий в header ($_SERVER['HTTP_REFERER']).
  • CURLOPT_USERAGENT Подделываем заголовок «user-agent» содержащий в header, используемый в HTTP-запросе ($_SERVER['HTTP_USER_AGENT']).
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, 'http://localhost/test/test.php');
    curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
    curl_setopt($curl, CURLOPT_REFERER, "http://mysite.ru");
    curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 5.1; rv:12.0) Gecko/20100101 Firefox/12.0");
    $out = curl_exec($curl);
    echo $out;
    curl_close($curl);
 

Рецепты

Проверка сайта на доступность

       if (isDomainAvailible('http://site.com'))
       {
               echo "Домен доступен, пример работает!";
       }
       else
       {
               echo "Упс, домен не доступен.";
       }
       //возвращает true, если домен доступен, false если нет
       function isDomainAvailible($domain)
       {
               //проверка на валидность урла
               if(!filter_var($domain, FILTER_VALIDATE_URL))
               {
                       return false;
               }
               //инициализация curl
               $curlInit = curl_init($domain);
               curl_setopt($curlInit,CURLOPT_CONNECTTIMEOUT,10);
               curl_setopt($curlInit,CURLOPT_HEADER,true);
               curl_setopt($curlInit,CURLOPT_NOBODY,true);
               curl_setopt($curlInit,CURLOPT_RETURNTRANSFER,true);
               //получение ответа
               $response = curl_exec($curlInit);
               curl_close($curlInit);
               if ($response) return true;
               return false;
       }