RTFM! статьи, советы, скрипты
::Заработок с помощью сайта ::JScript по-русски! ::Все русские мануалы::
МЕНЮ
О САЙТЕ
НОВОСТИ
СТАТЬИ
КНИГИ
АППЛЕТЫ
СВЯЗЬ

СЧЕТЧИКИ
Rambler's Top100
Рейтинг@Mail.ru
Яндекс цитирования

CURL, Client URL Library Functions

Автор: Mike J.K. Сайт: http://www.phpclub.ru/     Рейтинг: N/A из 7       <<НАЗАД
   
   
   PHP поддерживает libcurl, библиотеку созданную Daniel Stenberg,
   которая позволяет соединяться и устанавливать связь со многими типами серверов используя
   много различных протоколов. libcurl к настоящему времени поддерживает:
   http, https, ftp, gopher, telnet, dict, file, и ldap - протоколы а так же поддерживает
   HTTPS-сертифиаты. HTTP POST, HTTP PUT, FTP uploading (pfuhepre)
   (если включено соответствующее PHP ftp расширение), HTTP загрузку базирующуюся на формах,
   прокси, куки (cookies) и user+password - идентификацию пользователей.
   
   Что бы использовать функции CURL нужно сначала установить пакет CURL версии не ниже 7.0.2-бета.
   php не будет работать с более раней версией.
   
   Так же необходимо включить поддержку CURL при компиляции PHP директивой --with-curl[=DIR].
   [=DIR] - должен содержать подкаталоги lib и include. В include должны находиться
   файлы заголовков easy.h и curl.h. Файл libcurl.a должен обнаруживаться в lib.
   [=DIR] - необязательный параметр , задаеться в том случае если CURL устанавливаеться в
   нестандартное место. По умолчанию CURL устанавливаеться в /usr.
   
   Функции работы с curl были включены в PHP начиная с версии 4.0.2.
   
   Как только Вы скомпилировали PHP с поддержкой CURL, Вы можете начать использовать его функции.
   
   Функции используються в следующей последовательности: Сначала функцией curl_init()
   инициализирцеться CURL-сессия, Затем выполняеться установка параметров curl_setopt() передачи,
   выполняемой посредством функции curl_exec(), Затем Ваша сессия завершаеться с помощью curl_close().
   Пример показывающий использование функций CURL для записи Домашней странички PHP в файл.
   
   
   Пример . Использование PHP с CURL-модулем для получения Домашней страницы PHP
   
   
   <?php
   
   $ch = curl_init ("http://www.php.net/");
   $fp = fopen ("php_homepage.txt", "w");
   
   curl_setopt ($ch, CURLOPT_FILE, $fp);
   curl_setopt ($ch, CURLOPT_HEADER, 0);
   
   curl_exec ($ch);
   curl_close ($ch);
   fclose ($fp);
   ?>
   
   Пример 2 Получение странички в переменную:
   
   <?php
   
   $ch = curl_init ("http://www.php.net/");
   
   curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
   $result = curl_exec ($ch);
   echo $result;
   
   curl_close ($ch);
   
   ?>
   
   Пример 3 Имитация обращения браузером:
   
   
   function download_pretending($url,$user_agent) {
   $ch = curl_init();
   curl_setopt ($ch, CURLOPT_URL, $url);
   curl_setopt ($ch, CURLOPT_USERAGENT, $user_agent);
   curl_setopt ($ch, CURLOPT_HEADER, 0);
   curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
   $result = curl_exec ($ch);
   curl_close ($ch);
   return $result;
   }
   
   
   Таблица функций:
   
   
   curl_init — Инициализация CURL- сессии
   
   Описание:
   int curl_init ([string url])
   
   curl_init() - инициализирует новую сессию и возвращает ее дескриптор для использования
   в других CURL функциях curl_setopt(), curl_exec() и curl_close().
   
   Необязательный url параметр устанавливает значение CURLOPT_URL.
   Вы можете задать его позже используя curl_setopt() - функцию.
   
   Пример 4 Вывод странички на экран
   
   <?php
   
   $ch = curl_init();
   
   curl_setopt ($ch, CURLOPT_URL, "http://www.zend.com/");
   curl_setopt ($ch, CURLOPT_HEADER, 0);
   
   curl_exec ($ch);
   
   curl_close ($ch);
   
   ?>
   
   
   curl_setopt -- Установка параметров CURL передачи
   Описание:
   
   bool curl_setopt (int ch, string option, mixed value)
   
   
   curl_setopt()
   Функция задает набор параметров для CURL сессии определяемой дескриптором ch.
   Параметр option - определяет название параметра сессии значение которому
   береться из переменной value.
   Значение должно соответствовать передаваемому названию параметра.
   Определены следующии названия параметров сессии (значения переменной option):
   
   CURLOPT_INFILESIZE - Когда определяеться загрузка файла с удаленного сервера, Эта опция задает предполагаемый размер файла
   CURLOPT_VERBOSE - Установка этого параметра в ненулевое значение определяет вывод CURL-ом отладочной информации
   CURLOPT_HEADER - Установите этот параметр не равным нулю если Вы хотите иметь на выходе заголовок.
   CURLOPT_NOPROGRESS - Установить этот параметр не равным нулю для отображения статуса завершения текущей CURL сесии. По умалчанию PHP устанавливает его в нуль.
   CURLOPT_NOBODY - Установите параметр в ненулевое значение, если хотите что бы тело странички (BODY) не включалось в вывод
   CURLOPT_FAILONERROR - Установите параметр в ненулевое значение, если Вы хотите, что PHP не выводил
   данных если код выполнения HTTP запроса более чем 300. По умолчанию всегда возвращаеться какая либо страница и код возврата HTTP игнорируеться.
   
   CURLOPT_UPLOAD - Установите параметр в ненулевое значение, что бы PHP выполнил загрузку.
   CURLOPT_POST - Установите этот параметр не равным нулю если Вы хотите, что PHP сделал регулярный HTTP POST - запрос.
   Этот ПОСТ - нормальный application/x-www-от-urlencoded тип, наиболее часто использьзуемый HTML-формами.
   CURLOPT_FTPLISTONLY - Set this option to a non-zero value and PHP will just list the names of an FTP directory.
   CURLOPT_FTPAPPEND - Set this option to a non-zero value and PHP will append to the remote file instead of overwriting it.
   CURLOPT_NETRC - Установите эту опцию не равной нулю величине и PHP просканирует ваш ~./netrc файл, чтобы найти ваше имя пользователя и пароль для дистанционного сайта с которым Вы устанавливаете соединение.
   CURLOPT_FOLLOWLOCATION - Установите этот параметр не равным нулю, что бы определить редирект на
   UTL определенноый в заголовке Locations. (Внимание по умолчанию это порождает рекурсивное обращение к той самому себе
   CURLOPT_PUT - Установить в ненулевое значение, что бы выполнить HTTP PUT файла. Файл для загрузки по PUT должен быть определен так же в CURLOPT_INFILE и CURLOPT_INFILESIZE параметрах
   CURLOPT_MUTE - Установить в ненулевое значение что бы PHP полностью игнорировал коды возврата CURL
   CURLOPT_TIMEOUT - Задает максимальный интервал времени в секундах в течении которого CURL может выполнять сессию
   CURLOPT_LOW_SPEED_LIMIT - Задает минимальное значение скорости передачи в байт/секундах при которых CURL будет выполнять запрос.
   CURLOPT_LOW_SPEED_TIME - Задает время в течении которого если скорость передачи ниже заданной в CURLOPT_LOW_SPEED_LIMIT запрос аварийно завершаеться.
   CURLOPT_RESUME_FROM - Задает число байт которые будут пропущены при получении данных передачи
   CURLOPT_SSLVERSIONО - пределяет используемую версию SSL (2 или 3). Обычно PHP это делает автоматически, хотя иногда приходиться задавать в ручную.
   CURLOPT_TIMECONDITION - Pass a long as a parameter that defines how the CURLOPT_TIMEVALUE is treated.
   You can set this parameter to TIMECOND_IFMODSINCE or TIMECOND_ISUNMODSINCE.
   This is a HTTP-only feature.
   
   CURLOPT_TIMEVALUE - Pass a long as a parameter that is the time in seconds since January 1st, 1970. The time will be used as specified by the CURLOPT_TIMEVALUE option, or by default the TIMECOND_IFMODSINCE will be used.
   The value parameter should be a string for the following values of the option parameter:
   
   CURLOPT_URL - Определяет запрашиваемый PHP URL. Вы можете определить его сразу при инийиализации сессии в curl_init()
   CURLOPT_USERPWD - Должен содержать строку в виде [username]:[password] для установления защищенных соединений
   CURLOPT_PROXYUSERPWD - Должен содержать строку в виде [username]:[password] если требуеться соединение с HTTP прокси требующим авторизации
   CURLOPT_PROXY - Задает имя или адрес proxy если libcurl используеться для выхода во внешний мир через http proxy
   параметр должен быть строкой вида: char * to a zero terminated string. Порт может быть задан
   в конце строки имени хоста ":[port]". Строка может иметь префик "[proto­col]://". Любой другой префик будет проигнорирован.
   CURLOPT_PROXYPORT - Определяет номер порта http proxy заданного в CURLOPT_PROXYPORT
   CURLOPT_HTTPPROXYTUNNEL - Set the parameter to non-zero to get the library to tunnel all non-HTTP operations through the given
   HTTP proxy. Do note that there is a big difference to use a proxy and to tunnel through it. If you
   don't know what this means, you probably don't want this tunnel option. (Added in libcurl 7.3)
   
   CURLOPT_RANGE - Pass the specified range you want. It should be in the "X-Y" format, where X or Y may be left out. The HTTP transfers also support several intervals, seperated with commas as in X-Y,N-M.
   CURLOPT_POSTFIELDSО - пределяет строку данных отправляемых в запросе POST
   CURLOPT_REFERER - Задает строку referer котрая будет вставлена в сгенерированный CURL-ом HTTP запрос.
   CURLOPT_USERAGENT - Задает строку usr-agent которая будет включена в HTTP-запрос
   CURLOPT_FTPPORT - Pass a string containing the which
   will be used to get the IP address to use for the ftp "POST" instruction. The POST instruction tells the remote server to connect to our specified IP address. The string may be a plain IP address, a hostname, a network interface name (under UNIX), or just a plain '-' to use the systems default IP address.
   
   CURLOPT_COOKIE - Строка содержащая содержимое cookie которые должны быть в HTTP-заголовке.
   CURLOPT_SSLCERT - Pass a string containing the filename of PEM formatted certificate.
   CURLOPT_SSLCERTPASSWD - Pass a string containing the password required to use the CURLOPT_SSLCERT certificate.
   CURLOPT_COOKIEFILE - Pass a string containing the name of the file containing the cookiee data. The cookie file can be in Netscape format, or just plain HTTP-style headers dumped into a file.
   CURLOPT_CUSTOMREQUEST - Pass a string to be used instead of GET or HEAD when doing an HTTP request. This is useful for doing DELETE or another, more obscure, HTTP request.
   Примечание: не делает этого пока не убедитесь что ваш сервер поддерживает первую команду.
   Следующие опции ожидают получить файловый дескриптор, который получается функцией fopen():
   CURLOPT_FILE - Файл в который по умолчанию запишеться вывод, по умолчанию STDOUT
   CURLOPT_INFILE - Файл из которого будут загружаться данные...
   CURLOPT_WRITEHEADER - The file to write the header part of the output into.
   CURLOPT_STDERR - The file to write errors to instead of stderr.
   
   
   Пример 5 POST запрос с передачей параметров
   
   <?php
   
   $ch = curl_init();
   
   curl_setopt($ch, CURLOPT_URL,"http://www.mysite.com/tester.phtml");
   curl_setopt($ch, CURLOPT_POST, 1);
   curl_setopt($ch, CURLOPT_POSTFIELDS, "postvar1=value1&postvar2=value2&postvar3=value3");
   curl_exec ($ch);
   
   curl_close ($ch);
   
   ?>
   
   
   Пример 6 Возвращение результата выполнения запроса в переменной
   
   <?php
   
   $ch = curl_init();
   
   curl_setopt($ch, CURLOPT_URL,"http://www.myurl.com/");
   curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
   $result=curl_exec ($ch);
   curl_close ($ch);
   
   ?>
   
   
   Если вы желаете соединяться с SSL-сервером для выполнения запросов то необходимо
   использовать cURL с openSSL опцией.
   
   Пример 7 Использует HTTPS и задает user-agent
   
   curl_setopt($ch, CURLOPT_URL,"https://secure.website.com");
   //some sites only accept your request
   //if your browser looks legit, so send a useragent profile...
   curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
   
   
   curl_exec — Выполнение CURL сессии
   Описание
   bool curl_exec (int ch)
   Эта функция - должна быть вызвана после того,
   как Вы проинициализировали сессию и задали для нее все параметры.
   Функция выполняет запрос сессии заданной в ch.
   
   
   curl_close— Закрыть CURL сессию
   Описание:
   void curl_close (int ch)
   
   Функция закрывает сессию CURL заданную дескриптором ch. Освобождаються все используемые для сесии ресурсы.
   Дескриптор удаляеться.
   
   
   curl_version— Возращение текущей версии CURL
   Описание:
   string curl_version ()
   
   Недокументированная функция:
   string curl_getinfo(int ch, int opt)
   
   Получает информацию относительно параметров передачи
   
   Поддерживаемые опции:
   CURLINFO_EFFECTIVE_URL
   CURLINFO_HTTP_CODE
   CURLINFO_HEADER_SIZE
   CURLINFO_REQUEST_SIZE
   CURLINFO_TOTAL_TIME
   CURLINFO_NAMELOOKUP_TIME
   CURLINFO_CONNECT_TIME
   CURLINFO_PRETRANSFER_TIME
   CURLINFO_SIZE_UPLOAD
   CURLINFO_SIZE_DOWNLOAD
   CURLINFO_SPEED_DOWNLOAD
   CURLINFO_SPEED_UPLOAD
   
   
   Если вы желаете написать HTTP запрос минуя другие CURL функции используйте CURLOPT_POST
   параметр в curl_setopt ($ch,CURLOPT_CUSTOMREQUEST , $req).
   Где $reg содержит записи аналогичне POST-запросу:
   
   
   POST /destination/script HTTP/1.1
   Content-length: xxx
   Content-type: text/xml
   host: yourhost
   accept: */*
   accept-encoding: gzip, deflate
   accept-language: en-us
   connection: close; Keep-Alive
   ...
   Ваши POST данные
   ...
   
   CURLOPT_CUSTOMREQUEST Не документированная но очень полезная опция.
   
   
   


<<НАЗАД      ОЦЕНИТЬ СТАТЬЮ    ВЕРСИЯ ДЛЯ ПЕЧАТИ>>
Статья прочитана :  раз.




пейкюлю



 
 
 
 
 
pauk ©® 2000-2015. All rights reserved.
При перепечатке ссылка на сайт и указание обязательны.
Мнение администрации сайта не всегда совпадает с мнением автора.
Орфография и пунктуация - авторские.
Администрация не несет никакой ответственности за использование материалов.
.
Protected by Copyscape DMCA Takedown Notice Infringement Search Tool