Понедельник, 15.06.2026, 23:35
Приветствую Вас Гость | RSS
Поиск по каталогу
Главная страница | Каталог статей | Регистрация | Вход

Информационные технологии
Форма входа
Меню сайта

Категории каталога
php [246]
perl [1]
perl
ASP [1]
AJAX [0]

Друзья сайта

Наш опрос
Оцените мой сайт
Всего ответов: 69

Начало » Статьи » Web программирование » php

Применение cURL и libcurl в php

Вступление



Это руководство предназначено для тех web-разработчиков, которые хотят автоматизировать передачу файлов по сети либо взаимодействовать с другими Интернет - сервисами. Для чтения этой главы вам необходимо владеть пониманием принципа работы стратегии клиент - сервер и знать основы синтаксиса PHP.



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



В этой статье будет рассказано о том, что такое cURL, как его использовать из командной строки, и о его применении в PHP.



Что такое cURL и libcurl



cURL является сокращением от "Client URLs". Он был разработан Daniel Stenberg в 1998 году как утилита, работающая из командной строки. Libcurl - переносимая библиотека, предоставляющая простой API-интерфейс к функциональности cURL. Библиотека безопасна в мультипоточной среде, совместима с IPv6 и поддерживает постоянные соединения. Интерфейс взаимодействия с php был добавлен Sterling Hughes.



cURL и libcurl могут использоваться для передачи информации с использованием таких протоколов, как HTTPS, FTP, FTPS, GOPHER, LDAP, DICT, TELNET и FILE. Реализована поддержка практически всех *nix систем, а также Windows, OS/2, BeOS и некоторых других.



Библиотека curl - Open Source продукт с оригинальной MIT/X лицензией, позволяющей использовать этот пакет в любых: как коммерческих, так и некоммерческих целях, включать ее в свой дистрибутив (даже если он распространяется без открытого исходного кода).



Необходимо понимать, что cURL не имеет ничего общего с Curl Corporation, являющейся коммерческим производителем языка программирования Curl.



Инсталляция cURL



Для работы в PHP версии 4.2.3 и выше вам необходим cURL версии не ниже 7.9.0. Для работы в PHP версии 4.3.0 и выше вам необходим cURL версии не ниже 7.9.8.



Windows



Как и любой другой дополнительный модуль, он требует проинсталлированного дистрибутива PHP. Для установки cURL скопируйте файлы php4ts.dll, ssleay32.dll, php_curl.dll, msvcrt.dll из каталога DLL в системную директорию Windows, как правило, это:



c:\windows\system для Windows 9x/Me

c:\winnt\system32 для Windows NT/2000

c:\windows\system32 для Windows XP.


После этого необходимо раскомментировать строку



;extension=php_curl.dll


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



<?php

dl("php_curl.dll");

?>


Unix



Ближайшее зеркало, содержащее исходные коды и откомпилированные бинарные файлы для различных операционных систем, вы можете найти на сайте http://curl.haxx.se/.



Поскольку cURL использует библиотеку openssl для SSL соединений, вначале необходимо установить на север SSL. В случае, если при инсталляции cURL библиотека openssl найдена не будет, произойдет установка cURL без поддержки SSL соединений.



Инсталляция cURL состоит из следующих шагов: ./configure, make, make install.



После этого необходимо пересобрать PHP c опцией --with-curl



О том, включена ли поддержка cURL в php, вы можете узнать, выполнив phpinfo().



Пример использования cURL



Использование cURL из командной строки очень просто. Следующий пример запрашивает web-страницу и выводит ее в stdout



$ curl -L zend.com


M(опция -L разрешает переадресации)



Также возможно использование cURL из командной строки при помощи PHP. Следующий пример запрашивает 3 страницы и выводит их на экран



<?php

$var = echo shell_exec("/usr/bin/curl -L http://www.zend.com http://zend.com/developers.php http://zend.com/zend/tut/");

?>


Пример использования cURL в PHP



Использование libcurl в php-скрипте является достаточно простым, особенно для таких операций, как генерация POST-запросов.



Для использования libcurl необходимо выполнить следующие шаги:



  • Инициализировать сессию cURL
  • Установить опции cURL (порядок установки опций не имеет значения)
  • Выполнить запрос
  • Завершить сессию cURL


Для демонстрации вышеперечисленного приведем практические примеры использования cURL для генерации POST-запроса, HTTP-авторизации, FTP-сессии.



<?php

// Поиск книг на сервере amazon.com

$url = "http://www.amazon.com/exec/obidos/search-handle-form/002-5640957-2809605";

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL,$url); // set url to post to

curl_setopt($ch, CURLOPT_FAILONERROR, 1);

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);// allow redirects

curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); // return into a variable

curl_setopt($ch, CURLOPT_TIMEOUT, 3); // times out after 4s

curl_setopt($ch, CURLOPT_POST, 1); // set POST method

curl_setopt($ch, CURLOPT_POSTFIELDS, "url=index%3Dbooks&field-keywords=PHP+MYSQL"); // add POST fields

$result = curl_exec($ch); // run the whole process

curl_close($ch);   

echo $result;

?>



<?php

// HTTP authentication

$url = "http://www.example.com/protected/";

$ch = curl_init();      

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);   

curl_setopt($ch, CURLOPT_URL, $url);   

curl_setopt($ch, CURLOPT_USERPWD, "myusername:mypassword");   

$result = curl_exec($ch);   

curl_close($ch);   

echo $result;

?>



<?PHP

// FTP this script to a server

$fp = fopen(__FILE__, "r");

$url = "ftp://username:password@mydomain.com:21/path/to/newfile.php";

$ch = curl_init();      

curl_setopt($ch, CURLOPT_URL, $url);   

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);   

curl_setopt($ch, CURLOPT_UPLOAD, 1);   

curl_setopt($ch, CURLOPT_INFILE, $fp);   

curl_setopt($ch, CURLOPT_FTPASCII, 1);   

curl_setopt($ch, CURLOPT_INFILESIZE, filesize(__FILE__));   

$result = curl_exec($ch);   

curl_close($ch);   

?>


При возникновении проблем в использовании cURL необходимо добавить следующие строки перед вызовом curl_close для получения отчета о последнем выполненном запросе:



<?php

print_r(curl_getinfo($ch));   

echo "\n\ncURL error number:" .curl_errno($ch);   

echo "\n\ncURL error:" . curl_error($ch);   

// ...close cURL handle ($ch) below

?>


Решение о том, что использовать: cURL или libcurl, - стоит принимать в зависимости от обстоятельств. В случае, если Вы пишете выполняемый из командной строки скрипт, либо у Вашего провайдера нет поддержки libcurl, имеет смысл использовать cURL. В остальных случаях использование libcurl оказывается более удобным.



Оригинал статьи доступен по адресу http://zend.com/zend/tut/tutorial-thome3.php
Категория: php | Добавил: freeone (09.05.2007) | Автор: Александр Войцеховский
Просмотров: 1024 | Рейтинг: 0.0 |

Всего комментариев: 0
Имя *:
Email *:
Код *:

Copyright Информационные технологии © 2006