Работа с curl. Пример.

Для чего нужны CURL читатель предполагаю что знает. Но все же вкратце расскажу.

С помощью Curl можно получить содержание удаленной страницы, эмулируя работу браузера, частично. То есть можно посылать заголовки , как это делает браузер, и даже можно авторизоваться в htaccess.

Для начала инициализируем curl с помощью curl_init(). Приведу ниже простой пример работы с curl.

		$curl = curl_init();
  		if(!$curl){ print curl_errno($curl); die('Не удаллось соедениться');}
  		curl_setopt($curl, CURLOPT_URL, "http://www.site.ru/");
  		curl_setopt($curl, CURLOPT_HEADER, 0);
  		curl_setopt($curl, CURLOPT_POST, 1);
  		curl_setopt($curl, CURLOPT_POSTFIELDS, array('id'=>$bill_id));
//// эта опция как раз и необходима если сервер требует htaccess авторизацию
		curl_setopt($curl, CURLOPT_USERPWD, "login:password");
  		$str = curl_exec($curl);
  		curl_close($curl);

Весь контент удаленной страницы мы получим в переменную $str. Как видно из примера, основные шаги работы это:

  • инициализация системы CURL, с помощью curl_init()
  • установка всех опций, с помощью curl_setopt(), таких как авторизация отправка заголовков и прочее, об этом дальше
  • выполнение соединения, потому как до этого никакого соединения с удаленным сервером не происходило. И получение ответа в переменную с помощью, curl_exec().
  • Закрытие Curl. - curl_close();

Все возможные варианты опций, которые задаются curl_setopt():

Для перечисленных ниже параметров, value должен быть целым числом:

CURLOPT_INFILESIZE: при закачке файла на удаленный сервер, следует использовать этот параметр для указания ожидаемого размера файла.

CURLOPT_VERBOSE: При установке этого параметра в ненулевое значение cURL будет выводить подробные сообщения о всех производимых действиях.

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

CURLOPT_NOPROGRESS: При установке этого параметра в ненулевое значение не будет выводиться индикатор прогресса операции.

Замечание: В PHP этот параметр устанавливается в ненулевое значение по умолчнию. Изменять его значение рекомендуется только при отладке.

CURLOPT_NOBODY: При установке этого параметра в ненулевое значение результат не будет включать документ (например, вам нужно получить только заголовки).

CURLOPT_FAILONERROR: При установке этого параметра в ненулевое значение, получение HTTP кода более 300 считается ошибкой.

CURLOPT_UPLOAD: Установка этого параметра в ненулевое значение означает, что будет производиться закачка файла на удаленный сервер.

CURLOPT_POST: При установке этого параметра в ненулевое значение будет отправлен HTTP запрос методом POST типа application/x-www-form-urlencoded, используемый браузерами при отправке форм.

CURLOPT_FTPLISTONLY: При установке этого параметра в ненулевое значение будет получен список файлов в директории FTP сервера.

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

CURLOPT_NETRC: При установке этого параметра в ненулевое значение будет сделана попытка найти имя пользователя и пароль к удаленному серверу в файле ~./netrc.

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

CURLOPT_PUT: При установке этого параметра в ненулевое значение, будет производиться закачка файла методом HTTP PUT. Файл задается параметрами CURLOPT_INFILE и CURLOPT_INFILESIZE.

CURLOPT_MUTE: При установке этого параметра в ненулевое значение, все сообщения cURL будут подавляться.

CURLOPT_TIMEOUT: Задает масимальное время выполнения операции в секундах.

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

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

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

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

CURLOPT_SSL_VERIFYPEER: Установите этот параметр в ноль, чтобы запретить проверку сертификата удаленного сервера (начиная с curl 7.10, по умолчанию этот параметр имеет значение TRUE). Дополнительные сертификаты можно задать с помощью параметра CURLOPT_CAINFO (добавленного в in curl 7.9.8). Можно также указать путь к файлам сертификатов в параметре CURLOPT_CAPATH. Если CURLOPT_SSL_VERIFYPEER установлен в 0, возможно, также потребуется установить CURLOPT_SSL_VERIFYHOST в 1 или 0 (по умолчанию 2).

CURLOPT_SSLVERSION: Целое число, указывающее, какую версию SSL использовать (2 или 3). По умолчанию версия SSL определяется автоматически, но в некоторых случаях требуется явное указание.

CURLOPT_SSL_VERIFYHOST: Задает проверку имени, указанного в сертификате удаленного сервера, при установлении SSL соединения. Значение 1 означает проверку существования имени, значение 2 - кроме того, и проверку соответствия имени хоста.

CURLOPT_TIMECONDITION: Задает способ интерпретации значения параметра CURLOPT_TIMEVALUE. Возможные значения: TIMECOND_IFMODSINCE или TIMECOND_ISUNMODSINCE. Применяется только для протокола HTTP.

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

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

Для перечисленных ниже параметров, value должен быть строкой:

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

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

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

CURLOPT_RANGE: Задает участок файла, который нужно загрузить, в формате "X-Y" , причем X или Y могут быть опущены. Протокол HTTP также поддерживает передачу нескольких фрагментов файла, это задается в виде "X-Y,N-M".

CURLOPT_POSTFIELDS: Строка, содержащая данные для HTTP POST запроса.

CURLOPT_REFERER: Задает значение HTTP заголовка "Referer: ".

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

CURLOPT_FTPPORT: Задает значение, которое будет использоваться для определения IP адреса для команды "PORT" протокола ftp. Команда "PORT" сообщает серверу, с каким IP адресом он должен устанавливать соединение. Это может быть IP адрес, имя хоста, имя сетевого интерфейса (под Unix), или просто '-' для использования IP адреса по умолчанию.

CURLOPT_COOKIE: Содержимое заголовка "Cookie: ", который будет отправлен с HTTP запросом.

CURLOPT_SSLCERT: Имя файла с сертификатом в формате PEM.

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

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

CURLOPT_CUSTOMREQUEST: Задает специальный метод, который будет использован в HTTP запросе вместоGET или HEAD. Это используется для отправке запросов DELETE или других, редко используемых. Допустимыми зачениями являются GET, POST, и т.д; не передавайте полный HTTP запрос в этом параметре. Например, 'GET /index.html HTTP/1.0\r\n\r\n' недопустимо.

Замечание: Перед использованием этого параметра убедитесь, что сервер, к которому вы обращаетесь, поддерживает требуемый метод.

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

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

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

CURLOPT_HTTPHEADER: Массив с HTTP заголовками.

CURLOPT_QUOTE: Массив с FTP командами, которые будут выполнены перед выполнением основного запроса.

CURLOPT_POSTQUOTE: Массив с FTP командами, которые будут выполнены после выполнения основного запроса.

Для перечисленных ниже параметров, value должен быть дескриптором файла, возвращенным функцией fopen():

CURLOPT_FILE: Файл, в который будет выведен результат операции. По умолчанию STDOUT.

CURLOPT_INFILE: Файл, содержащий данные для передачи.

CURLOPT_WRITEHEADER: Файл, в который будут выведены полученные заголовки.

CURLOPT_STDERR: Файл, в который будут выводиться сообщения об ошибках. По умолчанию STDERR.

Запись опубликована в рубрике Веб-программирование. Добавьте в закладки постоянную ссылку.

Комментарии запрещены.