Бібліотека CURL (Client URL Library)
PHP підтримує бібліотеку libcurl. створену Даніелем Стенберг (Daniel Stenberg), що дозволяє здійснювати підключення і взаємодію з різними типами серверів, використовуючи найрізноманітніші протоколи. В даний час libcurl підтримує протоколи http. https. ftp. gopher. telnet. dict. file. ldap. Також бібліотека підтримує сертифікати HTTPS, методи HTTP POST і PUT, завантаження з FTP і HTTP, проксі, cookies та аутентифікацію користувача з паролем.
Схема використання функцій проста. Спочатку за допомогою функції curl_ init () инициализируется сесія CURL. При цьому встановлюються параметри передачі, з якими вона буде виконана функцією curl_exec (). після чого сесія може бути завершена за допомогою функції curl_close (). Нижче наведено приклад, який одержує домашню сторінку PHP і зберігає її у файлі.
curl_init. Відкриття сеансу CURL
int curl_init ([string url])
Функція ініціалізує нову сесію і повертає дескриптор CURL, який потім буде використовуватися функціями curl_setopt (). curl_exec () і curl_close (). У функції можна вказати необов'язковий аргумент url. в подальшому використовується як параметр CURLOPT_URL. Втім, цей параметр можна також встановити функцією curl_setopt ().
Приклад використання функції:
curl_setopt. Як встановити опції повідомлення CURL
bool curl_setopt (int ch, string option, mixed value)
Функція встановлює параметр, який має ім'я option. сесії CURL з ім'ям ch. в значення value.
Для можливих значень аргументу option. які перераховані в наступному списку, відповідне значення value має зазначатися у вигляді цілого числа:
- CURLOPT_INFILESIZE - встановити очікуваний розмір одержуваного файлу при його завантаженні на віддалений сервер.
- CURLOPT_VERBOSE - при ненульове значення буде повідомлятися всі, що відбувається під час сесії.
- CURLOPT_HEADER - при ненульове значення заголовок буде включатися в вміст виведення.
- CURLOPT_NOPROGRESS - при ненульове значення блокується відображення індикатора ходу виконання операцій передачі. За замовчуванням цей параметр встановлений, і його слід змінити, лише для цілей налагодження.
- CURLOPT_NOBODY - при ненульове значення вміст тега BODY не включатиметься в висновок.
- CURLOPT_FAILONERROR - при ненульове значення буде відбуватися звичайне завершення сценарію PHP, якщо буде отримано код повернення HTTP із значенням більшим, ніж 300. За замовчуванням відбувається нормальний повернення в сценарій з ігноруванням коду, що викликав помилку.
- CURLOPT_UPLOAD - при ненульове значення відбувається підготовка PHP для завантаження.
- CURLOPT_POST - при ненульове значення PHP виконує звичайний метод HTTP POST. Тип POST матиме нормальний вигляд application / x-www-from-urlencoded.
- CURLOPT_FTPLISTONLY - при ненульове значення PHP буде виводити імена файлів тільки в FTP.
- CURLOPT_FTPAPPEND - при ненульове значення PHP буде здійснювати додавання в кінець існуючого віддаленого FTP-файлу, замість його перезапису.
- CURLOPT_NETRC - при ненульове значення PHP буде переглядати файл
Для наступних можливих значень аргументу option відповідне значення value має зазначатися в строкове значення.
Для наступних можливих значень аргументу option відповідне значення value має зазначатися дескриптором, отриманим від функції fopen ().
- CURLOPT_FILE - вказується файл, в якому слід зберігати отримані дані. За замовчуванням використовується стандартний потік виведення stdout.
- CURLOPT_INFILE - задається файл, з якого слід отримувати дані для передачі.
- CURLOPT_WRITEHEADER - вказується файл для запису вмісту заголовків.
- CURLOPT_STDERR - вказується файл для збереження результатів помилок замість використовувався раніше потоку stderr.
curl_exec. Виконання CURL-сесії
bool curl_exec (int ch)
Функція виконує підготовлену сесію. Ця функція повинна викликатися після ініціалізації сесії CURL і після того, як всі параметри сесії були встановлені.
curl_close. закриття сеансу
void curl_close (int ch)