PHP CURL – функции и примеры использования

Полезные регулярки
14.07.2018
Регулярные выражения в примерах
14.07.2018

Предлагаю немного поговорить о языке программирования PHP, а конкретно затронуть тему расширения CURL, т.е. возможность взаимодействовать с различными серверами по различным протоколам из самого скрипта PHP.

Перед тем как приступить к рассмотрению curl хочу напомнить, что язык PHP мы с Вами уже затрагивали, например, в материале про выгрузку в Excel на PHP или возможность аутентификации на PHP, а теперь давайте поговорим о возможности посылать запросы на PHP.

Что такое CURL?

CURL – это библиотека функций PHP, с помощью которой можно посылать запросы, например, HTTP, из PHP скрипта. CURL поддерживает такие протоколы как HTTP, HTTPS, FTP и другие. Посылать HTTP запросы можно методами GET, POST, PUT.

CURL может пригодиться в случаях когда необходимо вызвать удаленный скрипт и получить результат или просто сохранить HTML код вызываемой страницы, в общем каждый может найти свое применение но смысл один это то что можно послать запросы в процессе выполнения скрипта.

Подключение библиотеки CURL в PHP

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

Примечание! В качестве примера мы будем использовать PHP 5.4.39 на Windows 7, а в качестве Web-сервера у нас будет выступать Apache 2.2.22.

Первое что нужно сделать, это скопировать библиотеки ssleay32.dll, libeay32.dll, libssh2.dll они расположены в директории с PHP, в системный каталог Windows, а именно в C:\Windows\System32.

Затем в php.ini подключить библиотеку php_curl.dll, т.е. раскомментировать следующую строку

Библиотека не подключена

 ;extension=php_curl.dll

Библиотека подключена

 extension=php_curl.dll

Все, перезапускаем Apache, вызываем функцию phpinfo() и в случае успешного подключения у Вас должен появиться раздел curl

Если его нет, то это означает только одно, что библиотека не загрузилась, самая распространенная причина этого небыли скопированы вышеперечисленные DLL в системный каталог Windows.

Пример CURL – запрашиваем удаленную страницу для вывода на экран

В данном примере мы просто запросим удаленную страницу по протоколу HTTP методом GET и выведем ее содержимое на экран.

У нас имеется каталог test в нем 2 PHP файла это test_curl.php и test.php, где test_curl.php и есть скрипт где мы будем использовать curl, а test.php удаленный скрипт который мы будем вызывать. Код я подробно прокомментировал.

Код test_curl.php


Код test.php

Заголовок 1";
                    break;
                case 2:
                    echo "<Н2>Заголовок 2";
                    break;
                case 3:
                    echo "<Н3>Заголовок 3";
                    break;                  
        }       
    }
?>

В итоге если вы запустите test_curl.php у Вас выведется на экран надпись «Заголовок 1», можете поэкспериментировать с передачей параметров id (в данном случае 2 или 3).

Пример CURL – вызываем удаленный скрипт и получаем результат

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

Код test_curl.php



Код test.php


И если мы запустим test_curl.php то на экран у нас выведется 111, т.е. 1.11 полученное в результате обращения к удаленному скрипту, умноженное на 100.

А теперь давайте поговорим о функциях и константах к ним.

Часто используемые функции CURL и константы

  • curl_init — Инициализирует сеанс;
  • curl_close — Завершает сеанс;
  • curl_exec — Выполняет запрос;
  • curl_errno — Возвращает код ошибки;
  • curl_setopt — Устанавливает параметр для сеанса, например:
    • CURLOPT_HEADER – значение 1 означает, что необходимо вернуть заголовки;
    • CURLOPT_INFILESIZE - параметр для указания ожидаемого размера файла;
    • CURLOPT_VERBOSE - значение 1 означает что CURL будет выводить подробные сообщения о всех производимых операциях;
    • CURLOPT_NOPROGRESS – отключение индикатора прогресса операции, значение 1;
    • CURLOPT_NOBODY – если Вам не нужен документ, а нужны только заголовки, то поставьте значение 1;
    • CURLOPT_UPLOAD - для закачки файла на сервер;
    • CURLOPT_POST – выполнить запрос методом POST;
    • CURLOPT_FTPLISTONLY - получение списка файлов в директории FTP сервера, значение 1;
    • CURLOPT_PUT - выполнить запрос методом PUT, значение 1;
    • CURLOPT_RETURNTRANSFER - возвратить результат, не выводя в браузер, значение 1;
    • CURLOPT_TIMEOUT – максимальное время выполнения в секундах;
    • CURLOPT_URL – указание адреса для обращения;
    • CURLOPT_USERPWD - строка с именем пользователя и паролем в виде [username]:[password];
    • CURLOPT_POSTFIELDS – данные для POST запроса;
    • CURLOPT_REFERER - задает значение HTTP заголовка «Referer: »;
    • CURLOPT_USERAGENT - задает значение HTTP заголовка «User-Agent: »;
    • CURLOPT_COOKIE - содержимое заголовка «Cookie: », который будет отправлен с HTTP запросом;
    • CURLOPT_SSLCERT- имя файла с сертификатом в формате PEM;
    • CURLOPT_SSL_VERIFYPEER – значение 0, для того чтобы запретить проверку сертификата удаленного сервера (по умолчанию 1);
    • CURLOPT_SSLCERTPASSWD - пароль к файлу сертификата.
  • curl_getinfo — Возвращает информацию об операции, вторым параметром может выступать константа для указания, что именно нужно показать, например:
    • CURLINFO_EFFECTIVE_URL - последний использованный URL;
    • CURLINFO_HTTP_CODE - последний полученный код HTTP;
    • CURLINFO_FILETIME - дата модификации загруженного документа;
    • CURLINFO_TOTAL_TIME - время выполнения операции в секундах;
    • CURLINFO_NAMELOOKUP_TIME - время разрешения имени сервера в секундах;
    • CURLINFO_CONNECT_TIME - время, затраченное на установку соединения, в секундах;
    • CURLINFO_PRETRANSFER_TIME - время, прошедшее от начала операции до готовности к фактической передаче данных, в секундах;
    • CURLINFO_STARTTRANSFER_TIME - время, прошедшее от начала операции до момента передачи первого байта данных, в секундах;
    • CURLINFO_REDIRECT_TIME - время, затраченное на перенаправление, в секундах;
    • CURLINFO_SIZE_UPLOAD - количество байт при закачке;
    • CURLINFO_SIZE_DOWNLOAD - количество байт при загрузке;
    • CURLINFO_SPEED_DOWNLOAD - средняя скорость закачки;
    • CURLINFO_SPEED_UPLOAD - средняя скорость загрузки;
    • CURLINFO_HEADER_SIZE - суммарный размер всех полученных заголовков;
    • CURLINFO_REQUEST_SIZE - суммарный размер всех отправленных запросов;
    • CURLINFO_SSL_VERIFYRESULT - результат проверки SSL сертификата, запрошенной с помощью установки параметра CURLOPT_SSL_VERIFYPEER;
    • CURLINFO_CONTENT_LENGTH_DOWNLOAD - размер загруженного документа, прочитанный из заголовка Content-Length;
    • CURLINFO_CONTENT_LENGTH_UPLOAD - размер закачиваемых данных;
    • CURLINFO_CONTENT_TYPE - содержимое полученного заголовка Content-type, или NULL в случае, когда этот заголовок не был получен.

Подробнее о функциях CURL и константах к ним можете посмотреть на официальном сайте PHP -php.net

Политика конфиденциальности

Политика конфиденциальности ресурса, расположенного на доменном имени www.contentim.ru

1. ОПРЕДЕЛЕНИЕ ТЕРМИНОВ

2. ОБЩИЕ ПОЛОЖЕНИЯ

3. ПРЕДМЕТ ПОЛИТИКИ КОНФИДЕНЦИАЛЬНОСТИ

4. ЦЕЛИ СБОРА ПЕРСОНАЛЬНОЙ ИНФОРМАЦИИ ПОЛЬЗОВАТЕЛЯ

5. СПОСОБЫ И СРОКИ ОБРАБОТКИ ПЕРСОНАЛЬНОЙ ИНФОРМАЦИИ

6. ОБЯЗАТЕЛЬСТВА СТОРОН

7. ОТВЕТСТВЕННОСТЬ СТОРОН

8. РАЗРЕШЕНИЕ СПОРОВ

9. ДОПОЛНИТЕЛЬНЫЕ УСЛОВИЯ

Обновлено «01» июня 2018 г.

×
Пользовательское соглашение ресурса, расположенного на доменном имени www.contentim.ru

1. ОБЩИЕ ПОЛОЖЕНИЯ

2. ОПРЕДЕЛЕНИЯ ТЕРМИНОВ

3. ПРЕДМЕТ СОГЛАШЕНИЯ

4. ПРАВА И ОБЯЗАННОСТИ СТОРОН

5. ИСПОЛЬЗОВАНИЕ САЙТА

6. ОТВЕТСТВЕННОСТЬ

7. НАРУШЕНИЕ УСЛОВИЙ ПОЛЬЗОВАТЕЛЬСКОГО СОГЛАШЕНИЯ

8. РАЗРЕШЕНИЕ СПОРОВ

9. ДОПОЛНИТЕЛЬНЫЕ УСЛОВИЯ

Обновлено «01» июня 2018 г.

×
Сбор персональных данных

Did you know, that Easy Modal has a fancy new replacement called Popup Maker? It is the highest user rated popup & modal plugin available for WordPress.

Принять

×
Заказать аудит сайта
*Все поля обязательные
×