cURL — очень мощный инструмент, который позволяет передавать данные с помощью различных протоколов. Очень часто его используют для передачи данных между веб-сайтами. Как пример таких запросов можно привести взаимодействие с API или oAuth.
сURL безграничен в своих возможностях, начиная от базовых HTTP запросов, продолжая передачей данных через протокол FTP и т.д. Список протоколов, с которыми работает cURL: FTP, FTPS, HTTP, HTTPS, TFTP, SCP, SFTP, Telnet, DICT, LDAP, а также POP3, IMAP и SMTP.
В этой статье мы рассмотрим разницу между передачей запроса методом GET и POST, разберем как работать с ответом и рассмотрим несколько частно используемых параметров
Основы
Перед тем, как отправить cURL запрос — нам следует создать сеанс. Сделать это можно при помощи функции curl_init( $url );
Данная функция принимает один параметр — url, который будет загружен. Но url можно будет установить позже, по этому данный параметр не обязателен.
Настройки
Параметры cURL нужны для того, чтобы более точно сконфигурировать Ваш запрос. С помощью параметров можно получить те самые, почти безграничные, возможности работы с запросами.
После того, как ресурс создан, можно приступить к настройке параметров запроса. Для этого мы можем пользоваться функцией curl_setopt ( $ch , $option , $value ) , которая принимает три обязательных параметра:
- $ch — ссылка на ресурс cURL
- Параметр, который мы устанавливаем
- Значение параметра
Ниже приведен список часто используемых параметров, а их полный список можно просмотреть в документации php.
Параметр | Описание |
CURLOPT_RETURNTRANSFER | Возвращает ответ как строку (если передать true), вместо вывода на экран |
CURLOPT_CONNECTTIMEOUT | Позволяет задать количество секунд для ожидания соединения. |
CURLOPT_TIMEOUT | Задает количество секунд, которые будет выполняться запрос. |
CURLOPT_USERAGENT | Содержимое заголовка «User-Agent: «, посылаемого в HTTP-запросе. |
CURLOPT_URL | URL, куда будет отправлен запрос. |
CURLOPT_POST | true, если нужно отправить POST запрос |
CURLOPT_POSTFIELDS | Массив параметров для POST запроса |
Как задавать параметры
Как описывалось выше, параметры можно задавать при помощи метода curl_setopt . Давайте разберем несколько примеров:
Пример 1: Установим значение URL, куда будет отправлен запрос:
К слову, установить этот параметр можно в одну строку при инициализации ресурса:
Пример 2: Установим время выполнения запроса в 10 секунд:
Альтернативный способ задавать настройки
Настройки можно задать при помощи функции curl_setopt_array($ch, $array) , первый параметр которой — ссылка на ресурс cURL, второй — ассоциативный массив, где ключами выступают константы параметров.
Отправка запроса cURL
Как написано выше, при помощи cURL можно отправлять различные запросы. В данной статье мы рассмотрим варианты отправки GET и POST запросов.
Отправить GET запрос
GET запрос используется по умолчанию. Как вы увидите в примере ниже, он достаточно прост для понимания.
Если есть необходимость использовать параметры, их можно просто перечислить в url: http://testsite.com/?param=value¶m2=value2
Отправим простой GET запрос с параметрами:
Отправка POST запроса
Синтаксис для GET и POST запросов немного отличается. В случае, если запрос не содержит параметров, разница будет только в параметре CURLOPT_POST (в POST этот параметр устанавливаем в true или 1). Если необходимо передавать параметры POST запроса, дополнительно указываем параметр CURLOPT_POSTFIELDS (массив, где название параметра — ключ массив).
В данном примере отправляется тот-же запрос, который рассматривался в выше, отличается лишь метод отправки.
Завершение запроса
Скорее всего, вы обратили внимание на строку curl_close($curl);, которой завершаются оба примера. Данная строка необходима для того, чтобы завершить сеанс работы с cURL, ресурс $curl, инициализация которого происходит в первой строке — уничтожается.
Реальные примеры использования cURL
Давайте рассмотрим реальный пример отправки cURL запроса на языке php. Предлагаю подключиться к публичному API приватбанка и узнать курс валют на сегодня:
Код для этого примера будет выглядеть примерно следующим образом:
В данном примере мы получили ответ $response и обработали на нашей стороне, выведя информацию о курсах в удобочитаемом формате.
Создание GET и POST-запросов с помощью Curl
cURL — это программное обеспечение, состоящее из утилиты командной строки и библиотеки, предназначенное для передачи данных по разнообразным протоколам (HTTP, FTP, POP3, IMAP, SMTP и мн. др.). Мы рассмотрим только утилиту командной строки, название которой мы будем записывать как «curl». Навыки, полученные при ее использовании, позволяют легко освоить работу с библиотекой libcurl. Кроме того, мы ограничимся формированием HTTP-запросов: GET и POST.
Предварительные сведения
Протокол HTTP
HTTP — это протокол, используемый при обмене данных между веб-сервером и программой-клиентом (например, браузером). Он состоит из строк ASCII-текста, отсылаемых от клиента к серверу для запроса какого-либо действия. При получении запроса сервер отвечает клиенту несколькими служебными текстовыми строками, а затем выдает запрошенное содержимое.
Используя ключ -v , можно увидеть, какие именно команды curl отсылает серверу. Этот ключ дает возможность разобраться в особенностях взаимодействия curl и веб-сервера и помогает отладить запрос.
URL (Uniform Resource Locator — единый указатель ресурса) задает адрес определенного ресурса в Интернет. Например, URL веб-страницы cURL, записывается так: http://curl.haxx.se .
Формы
Формы представляют собой наборы полей, размещенные на веб-странице. Пользователь вводит в эти поля данные, затем нажимает на кнопку «OK» или «Отправить», после чего данные отправляются на сервер. Сервер принимает данные и решает, как поступить дальше: искать ли информацию в базе данных, показать ли введенный адрес на карте или использовать информацию для аутентификации пользователя. Разумеется, «решает» — означает, что на стороне сервера должна быть какая-то программа, которая принимает и обрабатывает присланные данные. Простейший пример: форма запроса поисковика Google.
Справка
Справку по curl можно получить, набрав в командной строке
$ — приглашение командной строки.
Получить содержимое страницы (GET)
Самый простой и обычный HTTP-запрос — получить содержимое заданного URL. URL может ссылаться на веб-страницу, изображение или какой либо-другой файл. Клиент отсылает GET-запрос на сервер и получает запрашиваемый документ. Если выполнить команду
вы получите веб-страницу, выведенную в окно терминала (точнее, в стандартный вывод). Чтобы сохранить эту страницу в файл curl.html , нужно указать
Все HTTP-ответы содержат набор заголовков, которые обычно скрыты. Чтобы увидеть эти заголовки вместе с самим документом, используйте ключ -i .
Отправить GET-запрос из формы
Форма запроса может использовать метод GET. Например, так:
Если вы откроете этот код в браузере, то увидите форму с текстовым полем и кнопкой с надписью «OK». Если вы, например, введете в форму ‘1990’ и нажмете «OK», то браузер создаст новый URL, по которому и проследует. Этот URL будет являться строкой, состоящей из предыдущего URL и строки запроса, вроде следующей: foo.cgi?year=1990&press=OK . Так, если форма располагалась по адресу www.foo.com/year.html (адрес взят «с потолка»!), то при нажатии на кнопку «OK» вы попадете на URL www.foo.com/foo.cgi?year=1990&press=OK .
Для формирования GET-запроса, введите то, что ожидалось от формы:
Метод POST
Метод GET приводит к тому, что вся введенная информация отображается в адресной строке браузера. Очевидно, что это не самый лучший способ в тех случаях, когда нужно отправить конфиденциальные данные или когда объем введенной информации очень велик. Для решения этой проблемы протокол HTTP предоставляет пользователю еще один метод — POST. С его помощью клиент отправляет данные отдельно от URL, и поэтому в адресной строке браузера вы их не увидите.
Форма, генерирующая POST-запрос, отличается от предыдущей лишь методом отправки:
curl сформирует POST-запрос с теми же данными следующим образом:
Обратите внимание на то, что данные, которые вы отправляете серверу, должны быть правильно закодированы. curl не сделает этого за вас. К примеру, если вы хотите, чтобы данные содержали пробел, то вам нужно заменить этот пробел на %20 и т. п. Это одна из самых распространенных ошибок, в результате чего данные передаются не так, как нужно.
Загрузка файлов с помощью POST
Форма, с помощью которой пользователь может загрузить файл, выглядит примерно так:
Заметьте, что тип содержимого Content-Type установлен в multipart/form-data .
Чтобы с помощью curl отослать данные в такую форму, введите:
Скрытые поля формы
Скрытые поля в формах являются одним из наиболее распространенных способов передачи информации о состоянии HTML-приложения. Такие поля не заполняются, они невидимы для пользователя, но передаются так же, как и обычные поля.
Пример формы с одним видимым и одним скрытым полями:
Чтобы отправить POST-запрос с помощью curl, вам не нужно задумываться о том, скрыто поле или нет — для curl все поля одинаковы:
Как выглядит POST-запрос «изнутри»
Когда с помощью curl вы заполняете форму и отсылаете ее данные на сервер, вы наверняка хотите, чтобы сформированный curl POST-запрос выглядел так же, как если бы он был выполнен с помощью браузера.
Простейший способ увидеть свой POST-запрос заключается в следующем:
- сохранить веб-страницу с формой на диск;
- изменить метод на GET;
- нажать кнопку «Отправить» (вы можете также изменить URL, которому будет передаваться данные).
Вы увидите, что данные присоединились к URL и разделены символами ? , как это и предполагается при использовании GET-форм.
Читайте также
- Установка библиотеки CurlPas на Free Pascal / Lazarus
- Скачивание файлов и отправка форм в R
Комментарии
Дмитрий Храмов
Компьютерное моделирование и все, что с ним связано: сбор данных, их анализ, разработка математических моделей, софт для моделирования, визуализации и оформления публикаций. Ну и за жизнь немного.
cURL — это просто
Технология cURL
cURL — это технология, которая предназначена для передачи/получения данных посредстов URL. Технология cURL поддерживает такие распространенные протоколы, как HTTP, FTP, HTTPs и другие. Изначально cURL был инструментом командной строки, однако разработчики PHP не поленились и создали библиотеку в PHP, чем облегчили жизнь миллионам программистам. Давайте попробуем вместе разобраться с технологией cURL на примерах. Советую читать всё и по порядку.
Я знаю достаточно много примеров, где для получения сторонних web-страниц (парсеры) использовались совершенно другие способы, отличные от cURL. Например:
- file_get_contents(«https://intop24.ru»);
- file(«https://intop24.ru»);
- readfile(«https://intop24.ru»);
Почему разработчики использовали их и что в них не так? А потому, что не знали, либо не хотели знать, что такое cURL. А не так в них то, что функционал ограничен: получили страницу и все на этом, в то время, как cURL может отправить форму на странице, получить ответ, обработать ошибку, начать всё заново и т.д.
Принцип работы cURL
При использовании cURL-запросов существует 4 основных шага, которые должны (обязаны) быть в вашем скрипте, это:
- Инициализация
- Назначение параметров
- Выполнение и выборка результата
- Освобождение памяти
Без любого из этих шагов ваш скрипт обречен на неудачу. Итак, основные шаги:
Думаю что все шаги вам понятны за исключением второго: «Указания параметров». На этом шаге мы остановимся более подробно, т.к. именно он задает все необходимые настройки / параметры / методы.
Ошибки в ходе работы скрипта
Дабы не нагружать сервер дальнейшими вычеслениями, всегда проверяйте результат выполнения функции curl_exec:
Отмечу, что знак сравнения здесь ‘===’, а не ‘==’, т.е. сравнивается именно на наличие логического FALSE, а не пустой строки или строки ‘false’.
Результат запроса
Ну а после того, как CURL-запрос был выполнен, неплохо бы было знать, что он вернул:
А вот какие еще даные мы можем получить:
Индекс массива | Значение | Индекс массива | Значение |
---|---|---|---|
url | string(17) «https://intop24.ru» | content_type | string(24) «text/html; charset=utf-8» |
http_code | int(200) | header_size | int(218) |
request_size | int(49) | filetime | int(-1) |
ssl_verify_result | int(0) | redirect_count | int(0) |
total_time | float(0.009419) | namelookup_time | float(1.3E-5) |
connect_time | float(1.3E-5) | pretransfer_time | float(1.4E-5) |
size_upload | float(0) | size_download | float(46523) |
speed_download | float(4939271) | speed_upload | float(0) |
download_content_length | float(-1) | upload_content_length | float(0) |
starttransfer_time | float(0.009374) | redirect_time | float(0) |
certinfo | array(0) | redirect_url | string(0) «» |
POST запрос с помощью CURL
Давайте напишем наш первый скрипт, который отправит данные методом POST на какую-нибудь страницу и посмотрит, что отобразилось на этой странице.
Сначала нам нужен файл, который бы принял наши данные и что-то вывел на страницу. Я расположил его по адресу https://intop24.ru/demo/curl/post.php. В нем содержится следующий код:
Теперь попробуем передать туда какие-то данные:
Результат можно посмотреть здесь: curl_post.php
Отправка файла с помощью CURL
Смысл здесь абсолютно такой же, как и в запросе POST.
Файл, который примет данные: https://intop24.ru/demo/curl/upload_file.php.
Теперь попробуем передать туда какие-то данные:
Результат можно посмотреть здесь: curl_post_file.php
Загрузка файла — это тот же самый POST-запрос, однако перед путем к файлу стоит знак «@», что и обозначает, что нужно это передать не как $_POST, а как $_FILES.
HTTP аутентификация с помощью CURL
Довольно полезная штука.
Запрос сURL через прокси
Понравилась или помогла статья? Самое лучшее, что ты можешь сделать — это поделиться ею в любой из своих соцсетей (даже если ты поделишься в твиттере или google+, которыми ты не пользуешься — это очень поможет развитию моего блога). Спасибо! А если ты еще и оставишь любой комментарий снизу в обсуждениях, то это будет двойное СПАСИБО!
Отправка POST-запросов в cURL
Вот мы и переходим к самому соку модуля cURL. Эта статья очень важная и знания, которые Вы получите, будут использоваться в cURL чаще всего. Мы с Вами будем говорить об отправке POST-запросов в cURL.
Прежде чем отправлять POST-запросы, необходимо определиться, как это будет происходить и что нам для этого нужно. Нам нужно два файла: источник и приёмник. Соответственно, в источнике мы будем отправлять POST-запрос через cURL на приёмник. Приёмник будет этот запрос обрабатывать, а источник с помощью cURL примет результат этой обработки. Надеюсь, что здесь всё понятно. Теперь о том, что будет отправляться и что будет происходить. Отправляться источником будут два числа. А приёмник будет считать сумму двух чисел, пришедших через POST-запрос. В результате, сумма двух чисел вернётся от приёмника к источнику, а далее мы это число просто распечатаем.
Итак, давайте начнём с кода для файла-приёмника («receiver.php«):
Здесь всё очень просто: записываем в переменные $a и $b данные из POST-запроса, а дальше выводим их сумму.
Теперь создадим файл-источник:
Опция CURLOPT_POST имеет значение true, что означает, что данные передаются методом POST. А в опции CURLOPT_POSTFIELDS содержится уже строка с передаваемыми данными. Если Вы запустите этот скрипт, то увидите число «11«, что и предполагалось (4+7).
Если вдруг Вы не понимаете, что происходит в других строчках кода, то почитайте статью работа с cURL, где подробно описываются все другие операции.
После осмысления этой статьи Вы уже будете обладать очень важными знаниями, которые позволят Вам делать с cURL практически всё, что угодно, и работать в любой области применения cURL.
P.S. Всех дам поздравляю с 8-м марта! Желаю всегда оставаться красивыми, жизнерадостными и иметь рядом с собой достойного мужчину!
P.P.S. Полный курс по PHP и MySQL: http://srs.myrusakov.ru/php
Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!
Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.
Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления
Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Порекомендуйте эту статью друзьям:
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
Она выглядит вот так:
Комментарии ( 23 ):
Спасибо за статью, полезно. Только вопрос: что делать если на странице есть ссылки типа scr=/folder/img.jpg?
Написать скрипт, которые заменяет относительные пути абсолютными.
Спасибо, в принципе так и думал, но хотел узнать нет ли встроенного решения у curl.
А как проверить это в Денвере? задала URL Z:/home/test1.ru/www/res.php — не работает.
Такая ссылка неправильная. Надо писать test1.ru/res.php
Не подскажите что делаю не так? Хотел написать простенький скрипт для авторизации на одном сайте, вот он if( $curl = curl_init() ) < curl_setopt($curl,CURLOPT_URL,'http:/primer.php'); curl_setopt($curl,CURLOPT_RETURNTRANSFER,true); curl_setopt($curl,CURLOPT_NOBODY,false); curl_setopt($curl,CURLOPT_HEADER,true); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, "login=4dd&passwd=df&submit=Вход&remember_me=&check_ip="); $out = curl_exec($curl); echo $out; curl_close($curl); >логин и пароль заведомо неверные, также передел значение кнопки submit+ название двух чекббоксов, которые я оставли неотмеченными поэтому и ничеко не присвоил им. Проблема в том, что на странице не выводится сообщение о неверном пароле, она выглядит так как будто я ничего и не писал. В чем может быть загвоздка?
Если checkbox не отмечен, то его и передавать не нужно, а вообще на сайтах иногда ставят защиту от таких дел. Например, требуют, чтобы клиентом был браузер, а не какой-то скрипт, требует, чтобы реферер стоял с их формы и ещё много, чего могут придумать. Также все эти сообщения выводят, как правило, из сессий, а в Вашем скрипте сессий нет, поэтому когда появляется страница в браузере, то, разумеется, ничего и не выводится.
Спасибо, попробую насчет сессий. Но я вот что не понял: разве в заголовке не должны хранится все параметры то есть данные Post, cookie, session? а то мне выводят вот что. HTTP/1.1 200 OK Server: nginx/1.1.8 Date: Sun, 25 Nov 2012 07:01:39 GMT Content-Type: text/html; charset=windows-1251 Transfer-Encoding: chunked Connection: keep-alive Cache-Control: no-cache, no-store, must-revalidate, max-age=0 Pragma: no-cache Expires: 0 Last-Modified: Sun, 25 Nov 2012 07:01:39 GMT X-UA-Compatible: IE=edge Set-Cookie: user_id=1ej5m1CxwlNVxoX3GHdcAg==; expires=Mon, 25-Nov-13 07:01:39 GMT; domain=(***); path=/ то есть инфа только о coockies, не пойму где посмотреть сессии и request параметры
Сессии не хранятся в заголовках, они в файлах лежат на сервере. А в cookie только идентификатор, возможно, user_id это он и есть.
Отличная статья коротко и понятно! Подскажите,как можно сделать,чтобы передаваемые данные из файла ‘источник’ в файл ‘приемник’ обработанные данные не возвращались обратно в файл ‘источник’.
curl_setopt($curl, CURLOPT_RETURNTRANSFER,true) — поставить тут false, тогда ничего возвращаться уже не будет.
Из статьи понял, что в папке сервера лежат 2 файла: файл-источник и файл-приёмник. Файл-приёмник имеет название «receiver.php», а файл- источник — . Назвал его «Index.php». Он же и запускается или что-то не так? Спасибо.
Назвать источник можно как угодно.
Приятно писать комментарии, задавать вопросы и знать,что на них всегда ответят! Спасибо,Михаил!
Не так вопрос сформулировала. Михаил, очень нужна ваша помощь! Есть файл «index.php», «index_1.php» и «index_2.php». Из файла «index.php» при клике по ссылке подгружается файл «index_1.php» с помощью «fancybox». В «index_1.php» обрабатываются полученные данные,отправляем данные с помощью формы в файл «index_2.php». В файле»index_2.php» обрабатываем данные в зависимости от данных получаем значение и помещаем в переменную $var. Как можно передать значение переменной $var обратно в файл «index.php»,чтобы можно было продолжать работать с этой переменной без перезагрузки страницы. Если с помощью сессии ,то после закрытия окна «fancybox»,чтобы продолжать работу с $var в файле «index.php» приходится перезагружать страницу. Если с помощью формы,то окно «fancybox» не закрывается. Можно с помощью CURL решить вопрос? Ооочень надеюсь на вашу помощь!
Да, с помощью cURL можно отправить GET или POST запрос с нужной переменной.
Вопрос в том,как это сделать? $url = «http://localhost/autocomplete/index.php»; $post_data = array ( «da» =>$var , ); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); curl_setopt($curl, CURLOPT_RETURNTRANSFER,true); curl_setopt($ch, CURLOPT_NOBODY,0); curl_exec($ch); curl_close($ch); Так? Но в этом случаи подгружается файл «index.php»
Надо в curl_init указать путь к файлу.
curl_setopt($ch, CURLOPT_URL, $url) А ,что этого не достаточно? curl_init(«http://localhost/autocomplete/index.php»); Никаких изменений не произошло
Чтобы подгружался другой файл, надо написать в $url другой файл, а не index.php Вы подгружаете этот файл, а потом пишите, что хотели другой файл, а не index.php
Все равно возвращаются, только к числу 11 добавляется через пробел число 1, а в файле приемнике в любом случае выводится 0.
irin, У меня тоже был ноль, заработало после того, как изменил адрес файла-приёмника в файле-источнике: с ‘receiver.php’ на ‘http://domain/receiver.php’ У меня файл лежит в: Z:homedomainwwwreceiver.php То есть нужно указать: ‘http://»имя вашей папки»/»имя вашего файла-приёмника»‘.
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.
Copyright © 2010-2020 Русаков Михаил Юрьевич. Все права защищены.
Пример использования в PHP библиотеки Curl для создания запросов Get/Post
Если вы работали с Linux , то использовали Curl для загрузки ресурсов из интернета. Эта библиотека также может использоваться для PHP post запросов .
Мы будем использовать
1. Подготовка среды
1.1. Установка
Ниже приведены команды для установки Apache , PHP и PHP-библиотеки Curl :
1.2. Конфигурация PHP
В файле /etc/php/apache2/php.ini необходимо включить расширение Curl :
Не забудьте перезапустить Apache после внесения изменений, чтобы осуществлять PHP отправку post запроса Curl .
2. Запрос GET
Давайте посмотрим, как использовать Curl для создания запросов GET :
Вот, что мы делаем для PHP Curl post запроса:
- Мы создали сессию Curl с помощью функции curl_init() . В случае возникновения ошибки возвращается false , поэтому, прежде чем продолжить, мы должны проверить ее;
- После того, как мы успешно создали сессию Curl , нужно настроить ее с помощью функции curl_setopt_array() . В данном случае мы настроили сессию со следующими параметрами:
- Сам URL-адрес . Для запросов GET нужно указать URL-адрес со строкой параметров, в формате key=value . Обратите внимание, как эта строка параметров составлена в функции stringifyParameters() : значения должны быть закодированы с помощью функции urlencode() ;
- Для параметра CURLOPT_FOLLOWLOCATION задается значение true . Это нужно для перехода по HTTP-редиректам 3xx . Если установлено значение false , и для указанного URL-адреса задано перенаправление, мы не сможем достичь конечного ( целевого ) URL-адреса ;
- Для параметра CURLOPT_RETURNTRANSFER задается значение true . Это позволяет сохранять HTTP — ответ в переменной;
- Необходимо проверить, не возвращают ли Curl ошибки, проверяя возвращаемые значения функций. Когда получаем значение false , можно получить информацию о последней ошибке для данной сессии Curl с помощью функции curl_error() ;
- Когда мы закончили обработку сессии Curl , нужно ее закрыть с помощью функции curl_close() .
Можно проверить этот скрипт и PHP отправить post запрос, введя, например, в адресной строке браузера localhost/path/to/curl_get.php?url=webcodegeeks.com&s=php .
3. Запрос POST
Для запросов POST мы должны настроить параметры Curl в несколько ином виде:
При установке URL-адреса мы задаем сам URL-адрес без параметров, которые задавались для запросов GET . Эти параметры указаны в опции CURLOPT_POSTFIELDS . Кроме этого мы определяем, что запрос будет выполнен с помощью метода POST ( CURLOPT_POST ).
Единственное различие между Curl-запросами POST и GET заключается в конфигурации сессии. Остальная часть скрипта отправки post запроса PHP одинакова для обоих случаев.
4. Инкапсуляция операций в классе Curl
При использовании Curl в проекте рекомендуется инкапсулировать весь код вместо использования функций, описанных выше. Иначе придется повторно запускать больше кода. Кроме этого повышается вероятность возникновения ошибок. Мы собираемся создать класс, который инкапсулирует эту логику.
В этом коде класса PHP Curl post запроса нет ничего, чего мы не рассматривали выше. За исключением способа, с помощью которого задаются параметры через функцию curl_setopt() .
Чтобы использовать этот класс, нужно сделать что-то вроде этого:
Приведенный выше код является более читаемым и простым в обслуживании. А также более гибким, так как он позволяет настроить любой параметр Curl .
Примечание: Запросы Curl могут быть использованы повторно, что позволяет увеличить производительность.
Данный скрипт обработки post запроса PHP будет работать без проблем. Это лучше, чем закрывать и открывать новую сессию Curl для каждого запроса. В нашем случае прирост производительности будет несущественным, но при нескольких запросах разница будет ощутимой.
Для повторного использования сессий Curl необходимо очистить и удалить установленные параметры, прежде чем добавлять новые. Это было сделано в файле curl_class.php с помощью функции curl_reset() .
5. Заключение
В этом примере я показал, как использовать в PHP-скриптах библиотеку Curl для создания запросов GET и POST , которые должны обрабатываться по-разному. Кроме этого мы разработали класс для более упорядоченной обработки Curl с помощью чистого и гибкого кода. Он позволяет повторно использовать уже открытые сессии для повышения производительности.
6. Скачайте исходный код
Это был пример использования Curl в PHP . Вы можете скачать его исходный код.
Данная публикация представляет собой перевод статьи « PHP Curl Get-Post Example » , подготовленной дружной командой проекта Интернет-технологии.ру