Библиотека CURL

Библиотека CURL

Помимо сокетов, обеспечивающих низкоуровневое обращение к серверу, РНР располагает специальным расширением CURL (Client URL Library).

Примечание. В случае расширения CURL не требуется удаление HTTP-заголовков, возвращаемых сервером, так как библиотека их удаляет по умолчанию. Однако CURL можно настроить на выдачу HTTP-заголовков, передаваемых сервером, если установит при помощи функции curl_setopt() ненулевое значение параметра CURLOPT_HEADER.

Внимание! Перед запуском скрипта, проверьте подключена ли библиотека CURL в конфигурационном файле php. ini. Для подключения библиотеки раскоментируйте строку extension=php_curl.dll, иначе скрипт работать не будет.

Загрузка страницы с использованием расширения CURL

<?php
//задаем адрес удаленного сервера
$curl=curl_init('http://www.php.net');
//устанавливаем параметры соединения
curl_setopt($curl, CURLLOPT_RETURNTRANSFER, 1);
//получаем содержимое страницы
$content=curl_exec($curl);
//закрываем CURL-соединение
curl_close($curl);
echo $content;
?>

В окне веб-браузера это будет выглядеть ТАК.

При помощи функции curl_init() задается адрес удаленного сервера и путь к файлу на нем. В отличии от функции fsockopen(), необходимо задать адрес полностью, включая префикс http://, т.к. расширение CURL позволяет работать с несколькими видами протоколов (HTTP, HTTPS, FTP). Если соединение с указанным сервером проходит успешно, функция curl_init() возвращает дескриптор соединения, который используется в качестве параметра во всех остальных функциях библиотеки.

Функция curl_setopt() позволяет задать параметры текущего соединения и имеет следующий синтаксис:

bool curl_setopt ($curl, $option, $value)

Функция устанавливает для соединения, имеющего дескриптор $curl, параметр $option со значением $value. В качестве параметра $option используются константы, определенные в ниже следующих таблицах. Если параметр успешно установлен, функция возвращает true, в противном случае — false.

Запрос выполняет функция curl_exec(). В нашем примере, содержимое запрашиваемой страницы возвращается в виде строки $content (такое поведение определяется константой CURLLOPT_RETURNTRANSFER, установленной ранее при помощи функции curl_setopt()).

В завершение функция curl_close() закрывает установленное ранее CURL-соединение.

Логические параметры CURL-соединения

Параметр Описание
CURLOPT_AUTOREFERER

При установке этого параметра в true, если осуществляется следование HTTP-заголовку Locanion, HTTP-заголовок Referer устанавливается автоматически

CURLOPT_COOKIESESSION

При установке этого параметра в true CURL игнорирует все сессионные cookie (хранящиеся в оперативной памяти и лишь до момента закрытия браузера)

CURLOPT_CRLF

При установке этого параметра в true UNIX-переводы строк \n автоматически преобразуется к виду \r\n

CURLOPT_DNS_USE_GLOBAL_CACHE

При установке этого параметра в true используется глобальный DNS-кэш

CURLOPT_FAILONERROR

При установке этого параметра в true получение HTTP -кода более 300 считается ошибкой

CURLOPT_FILETIME

При установке этого параметра в true CURL пытается получить дату последней модификации загружаемого документа

CURLOPT_FOLLOWLOCATION

При установке этого параметра в true при получении HTTP-заголовка Locanion будет происходить перенаправление на указанный этим заголовком URL (это действие выполняется рекурсивно, для каждого полученного заголовка Locanion)

CURLOPT_FORBID_REUSE

При установке этого параметра в true CURL-соединение завершается сразу после выполнения функции curl_exec(); повторное использование дескриптора соединения не допускается

CURLOPT_FRESH_CONNECT

При установке этого параметра в true для повторной операции curl_exec() CURL требует создания нового соединения, не используя кэширования

CURLOPT_FTPAPPEND

При установке этого параметра в true данные будут добавляться к файлу на FTP сервере, в противном случае файл будет перезаписан

CURLOPT_FTRASCII

При установке этого параметра в true данные с FTP сервера будут передаваться не в бинарном, а в текстовом (ASCII) виде

CURLOPT_FTPLISTONLY

При установке этого параметра в true будет получен список файлов в текущей директории FTP сервера

CURLOPT _HEADER

При установке этого параметра в true результат будет включат полученные HTTP-заголовки

CURLOPT_HTTPPROXYTUNNEL

При установке этого параметра в true данные будут передаваться через прокси-сервер

CURLOPT_MUTE

При установке этого параметра в true все сообщения CURL будут подавляться

CURLOPT_NETRC

При установке этого параметра в true будет осуществлена попытка найти имя пользователя и пароль к удаленному серверу в файле ~/netrc (где ~ — домашний каталог)

CURLOPT_NOBODY

При установке этого параметра в true результат не будет включать документ. Часто используется для того, чтобы получить только HTTP-заголовки

CURLOPT_NOPROGRESS

При установке этого параметра в true не будет выводиться индикатор прогресса операции (по умолчанию установлен)

CURLOPT_POST

При установке этого параметра в true отправляется POST-запрос типа application/x-www-form-urlencoded

CURLOPT_PUT

При установке этого параметра в true будет производиться закачка файла методом PUT протокола HTTP. Файл задается параметрами CURLOPT_INFILE и CURLOPT_INFILESIZE. Впрочем метод PUT на большинстве серверов запрещен к использованию

CURLOPT_RETURNTRANSFER

При установке этого параметра в true CURL будет возвращать результат, а не выводит его

CURLOPT_SSL_VERIFYPEER

При установке этого параметра в false запрещается проверка сетификата удаленного сервера. Дополнительные сертификаты можно задать с помощью параметра CURLOPT_CAINFO. Можно также указать путь к файлам сетрификатов в параметре CURLOPT_SSL_VERIFYPEER установлен в 0, возможно потребуется установить в 1 или 0 также CURLOPT_SSL_VERIFYHOST (по умолчанию 2)

CURLOPT_UNRESTRICTED_AUTH

При установке этого параметра в true имя пользователя и пароль сохраняются и передаются серверу при следовании HTTP-заголовку Locanion, даже если осуществляется переход на другой сайт

CURLOPT_UPLOAD

При установке этого параметра в true производится закачка файла на удаленный сервер

CURLOPT_VERBOSE

При установке этого параметра в true выводятся подробные сообщения обо всех производимых действиях

Целочисленные параметры CURL-соединения

Параметр Описание
CURLOPT_BUFFERSIZE

Размер буфера, используемого для чтения документа с удаленного сервера

CURLOPT_CONNECTTIMEOUT

Количество секунд перед попыткой соединения с сервером. По умолчанию имеет значение 0

CURLOPT_DNS_CACHE_TIMEOUT

Количество секунд, в течении которых хранится запись в DNS-кэше. По умолчанию имеет значение 120 (2 минуты)

CURLOPT_HTTP_VERSION

Версия HTTP-протокола; допустимы три значения: CURL_HTTP_VERSION_NONE (версия выбирается автоматически), CURL_HTTP_VERSION_1_0 (используется HTTP1.0), CURL_HTTP_VERSION_1_1 (используется HTTP1.1)

CURLOPT_HTTPAUTH

Метод(ы) HTTP-аутентификации; допустимые значения: CURLAUTH_BASIC, CURLAUTH_DIGEST, CURLAUTH_GSSNEGOTIATE, CURLAUTH_NTLM, CURLAUTH_ANY, CURLAUTH_ANYSAFE

CURLOPT_INFILESIZE

Размер файла при его загрузке на удаленный сервер

CURLOPT_LOW_SPEED_LIMIT

Минимальная скорость передачи в байтах в секунду. Если в течение периода времени, заданного параметром CURLOPT_LOW_SPEED_TIME, скорость передачи станет меньше этого значения, операция будет прервана

CURLOPT_LOW_SPEED_TIME

Время в секундах, в течение которого скорость передачи должна быть не ниже, чем CURLOPT_LOW_SPEED_LIMIT, чтобы операция была признана слишком медленной и прервана

CURLOPT_MAXCONNECTS

Максимальное количество постоянных соединений

CURLOPT_MAXREDIRS

Максимальное количество переходов по заголовку Locanion. Параметр используется совместно с CURLOPT_FOLLOWLOCATION

CURLOPT_PORT

Альтернативный номер порта для соединения

CURLOPT_PROXYAUTH

Метод(ы) аутентификации на прокси-сервере; принимает тн же значения, что и параметр CURLOPT_HTTPAUTH

CURLOPT_PROXYPORT

Номер порта для соединения с прокси-сервером; используется совместно с CURLOPT_PROXY

CURLPOPT_PROXYTYPE

Тип прокси-сервера; устанавливать соединение через HTTP-протокол (CURLPROXY_HTTP) или через сокет (CURLPROXY_SOCKS5)

CURLOPT_RESUME_FROM

Задает в файле позицию байта, с которого начинается передача данных

CURLOPT_SSL_VERIFYHOST

Скорость проверки имени, указанного в сертификате удаленного сервера (при установке SSL-соединения): 1 — предполагает только проверку существующего имени; 2 — кроме того, и проверку соответствия имени хоста

CURLOPT_SSLVERSION

Версия SSL; допустимые значения 2 и 3. По умолчанию версия SSL определяется автоматически, но в некоторых случаях требуется явное указание

CURLOPT_TIMECONDITION

Способ интерпретации значения параметра CURLOPT_TIMEVALUE. Допустимые значения: TIMECOND_IFMODSINCE и TIMECOND_ISUNMODSINCE. Применяется только для протокола HTTP

CURLOPT_TIMEOUT

Максимальное время выполнения операции в секундах

CURLOPT_TIMEVALUE

Время в секундах, прошедшее с полуночи 1 января 1970 года. Значение будет использовано в соответствии со значением параметра CURLOPT_TIMECONDITION (по умолчанию TIMECOND_IFMODSINCE)

Строковые параметры CURL-соединения

Параметр Описание
CURLOPT_CAINFO

Имя файла, содержащего один или более сертификатов, которые будут использоваться при проверке подлинности удаленного сервера. Имеет значение только совместно с параметром CURLOPT_SSL_VERIFYPEER

CURLOPT_CAPATH

Путь к директории с сертификатами. Имеет значение только совместно с параметром CURLOPT_SSL_VERIFYPEER

CURLOPT_COOKIE

Содержимое HTTP-заголовка Cookie. для установки нескольких значений cookie можно использовать несколько вызовов функции curl_setopt()

CURLOPT_COOKIEFILE

Имя сайта, содержащего данные cookie. Данные могут быть либо в формате Netscape, либо HTTP-заголовка

CURLOPT_COOKIEJAR

Имя файла, в который сохраняются не сессионные cookie, доступные при следующем сеансе соединения с сервером

CURLOPT _CUSTOMREQUEST

Метод, который будет использован в HTTP-запросе вместо GET или HEAD. Используется для отправки запросов DELETE или других, редко используемых. Допустимыми значениями являются GET, POST и т.д.

CURLOPT_ENCODING

Значение HTTP-заголовка Accert-Encoding, задающего метод сжатия HTTP-ответа. Допустимые значения: identity, deflate, gzip

CURLOPT_FTPPORT

Значение IP-адреса для команды PORT протокола FTP. Допустимые значения: IP-адрес, имя хоста,имя сетевого интерфейса (под UNIX), или просто '-' для использования IP-адреса по умолчанию

CURLOPT_INTERFACE

Имя используемого сетевого интерфейса. Может быть именем интерфейса IP-адресом или именем хоста

CURLOPT_KRB4LEVEL

Уровень безопастности KRB4 (Kerberos 4) для протокола FTP. Допустимы следующие значения (в порядке возростания безопастности): clear, safe, confidential, private . Если переданное значение не входит в этот список, используется private. Установка праметра NULL запрещает безопастность KRB4

CURLOPT_POSFIELDS

Строка данных для POST-запроса

CURLOPT_PROXY

Имя прокси-сервера, через который будут направляться запросы

CURLOPT_PROXYUSERPWD

Строка с именем пользователя и паролем к прокси -серверу HTTP в виде [username]:[password]

CURLOPT_RANDON_FILE

Путь к файлу используемому генератором случайных чисел для работы протокола SSL

CURLOPT_RANGE

Координаты фрагмента загружаемого файла в формате "X-Y" (вместо X и Y указывается позиция в файле). Одна из координат может быть опущена, например: "X-". Протокол HTTP также поддерживает передачу нескольких фрагментов файла, это задается в виде "X_Y, N_M"

CURLOPT_REFERER

Значение HTTP-заголовка Referer

CURLOPT_SSL_CIPHER_LIST

Список шифров, используемых SSL, например: RC4-SNA, TLSv1

CURLOPT_SSLCERT

Имя файла с SSL-сертификатом в формате РЕМ

CURLOPT_SSLCERTPASSWD

Пароль к файлу SSL-сертификата, заданному параметром CURLOPT_SSLCERT

CURLOPT_SSLCERTTYPE

Формат сертификата. Допускаются следующие форматы: PEM (по умолчанию), DER и ENG

CURLOPT_SSLKEY

Имя файла, содержащего закрытый SSL-ключ

CURLOPT_SSLKEYPASSWD

Секретный пароль, необходимый для использования закрытого SSL-ключа

CURLOPT_SSLKEYTYPE

Формат закрытого SSL-ключа. Допускаются следующие форматы: PEM (по умолчанию), DER и ENG

CURLOPT_URL

URL, с которого будет производится операция. Значение этого параметра также может быть задано при вызове функции curl_init()

CURLOPT_USERAGENT

Задает значение HTTP-заголовка User-Agent

CURLOPT_USERPWD

Строка с именем пользователя и паролем в виде [username]:[password]

Параметры CURL-соединения, являющиеся массивами

Параметр Описание
CURLOPT_HTTP200ALIASES Массив с HTTP-заголовками группы 200 (успешно выполненный запрос)
CURLOPT_HTTPHEADER Массив со всеми HTTP-заголовками
CURLOPT_POSTQUOTE Массив с FTP-командами, которые будут выполнены после выполнения основного запроса
CURLOPT_QUOTE Массив с FTP-командами, которые будут выполнены после выполнения основного запроса

Параметры CURL-соединения, используемые в качестве значений дескриптора файла, возвращаемого функцией fopen()

Параметр Данные, хранимые в файле
CURLOPT_FILE Результат операции
CURLOPT_INFILE Данные для передачи
CURLOPT_WRITEHEADER Полученные HTTP-заголовки
CURLOPT_STDERR Сообщения об ошибках

Если не задан ни один из параметров CURLOPT_RETURNTRANSFER, CURLOPT_FILE или CURLOPT_WRITEHEADER, функция curl_exec() по умолчанию выводит результат непосредственно в окно браузера. Так как результат запроса необходимо вывести непосредственно в браузер, можно не устанавливать никаких параметров.

Альтернативное решение

<?php
//задаем адрес удаленного сервера
$curl=curl_init('http://www.php.net');
//получает содержимое страницы
echo curl_exec($curl);
//закрываем CURL-соединение
curl_close($curl);
?>

В окне веб-браузера это будет выглядеть ТАК.




  • Другие |
назадвверхвперед
Rambler's Top100