Curl в php
Table of Contents
cURL — это свободная кроссплатформенная служебная программа командной строки для передачи файлов по различным протоколам с синтаксом URL.
Использование cURL в php
При использовании под Windows лучше для надёжности скопировать файлы libeay32.dll и ssleay32.dll из папки с php в system32.
Представляет собой (не знаю, как всё устроено внутри, но как выглядит «наружу») объект, который инициализируется factory-функцией, после чего можно при помощи своеобразных сеттеров установить необходимые свойства, а потом запустить выполнение.
Использование:
$ch = curl_init("http://www.example.com/");
$fp = fopen("example_homepage.txt", "w");
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
fclose($fp);
Т.е. все сводится к вызову curl_init, нескольким вызовам curl_setopt, затем curl_exec и curl_close.
Разберём эти функции подробнее (полный список — здесь):
curl_init
resource curl_init ([ string $url = NULL ] )
Инициализирует новую сессию и возвращает её дескриптор («создаёт объект»).
Опционально можно передать урл, тогда будет установлено свойство CURLOPT_URL (можно установить и позже).
curl_setopt
bool curl_setopt ( resource $ch , int $option , mixed $value )
Основная функция. Устанавливает «свойство» для указанного первым параметром «объекта».
resource $ch — дескриптор cURL-сессии
int $option — опция («свойство») (задаётся не целым числом, а предопределёнными константами)
mixed $value — значение.
Самое интересное здесь — эти самые предопределённые константы, в них вся сложность. Все они перечислены на официальном сайте, хоть и не по алфавиту немного.
curl_exec
mixed curl_exec ( resource $ch )
Выполняет cURL-запрос.
Возвращает обычно true/false, но если установлен параметр CURLOPT_RETURNTRANSFER, то при успешном выполнении вернёт ответ.
curl_close
void curl_close ( resource $ch )
Закрывает cURL-сессию и освобождает все ресурсы, в том числе и переданный $ch.
Вспомогательные функции:
curl_errno
int curl_errno ( resource $ch )
Возвращает номер ошибки или 0, если всё прошло хорошо.
curl_error
string curl_error ( resource $ch )
Возвращает описание ошибки или », если всё прошло хорошо.
curl_getinfo
mixed curl_getinfo ( resource $ch [, int $opt = 0 ] )
Можно передать параметр $opt (из констант).
Возвращает информацию о последнем обмене данными (короче, трансфере).
Если передан второй параметр, то возвращает строку, если нет — массив всех параметров.
Пример
$ch = curl_init();
//задаём url
curl_setopt($ch, CURLOPT_URL, "http://mysite:90/myuri");
//подделываем юзер-агента
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; 3305; .NET CLR 1.0.3705; .NET CLR 1.1.4322)');
//переходить по редиректам, инициируемым сервером, пока не будет достигнуто CURLOPT_MAXREDIRS (если есть)
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
//устанавливаем HTTP-заголовки (приходится устанавливать все, т.к. функция затирает дефолтные)
$headers = array
(
"Host: mysite:90",
"Referer: http://mysite:90/anotherurl",
"Accept: */*",
"Accept-Charset: utf-8,windows-1251,*",
"Accept-Language: ru"
);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
//не включать заголовки ответа сервера в вывод
curl_setopt($ch, CURLOPT_HEADER, false);
//вернуть ответ сервера в виде строки
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
if (curl_errno($ch))
{
//обработка ошибки, используя curl_error()
}
curl_close($ch);
*Формат строк для массива HTTP-заголовков — такой же, как и в функции header()
LEAVE A COMMENT
Для отправки комментария вам необходимо авторизоваться.