Ctrlv | cURL запросы в php

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 ) , которая принимает три обязательных параметра:

  1. $ch — ссылка на ресурс cURL
  2. Параметр, который мы устанавливаем
  3. Значение параметра

Ниже приведен список часто используемых параметров, а их полный список можно просмотреть в документации 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&param2=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-запрос заключается в следующем:

  1. сохранить веб-страницу с формой на диск;
  2. изменить метод на GET;
  3. нажать кнопку «Отправить» (вы можете также изменить 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.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

Она выглядит вот так:

  • BB-код ссылки для форумов (например, можете поставить её в подписи):
  • Комментарии ( 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 запроса:

    1. Мы создали сессию Curl с помощью функции curl_init() . В случае возникновения ошибки возвращается false , поэтому, прежде чем продолжить, мы должны проверить ее;
    2. После того, как мы успешно создали сессию Curl , нужно настроить ее с помощью функции curl_setopt_array() . В данном случае мы настроили сессию со следующими параметрами:
    • Сам URL-адрес . Для запросов GET нужно указать URL-адрес со строкой параметров, в формате key=value . Обратите внимание, как эта строка параметров составлена в функции stringifyParameters() : значения должны быть закодированы с помощью функции urlencode() ;
    • Для параметра CURLOPT_FOLLOWLOCATION задается значение true . Это нужно для перехода по HTTP-редиректам 3xx . Если установлено значение false , и для указанного URL-адреса задано перенаправление, мы не сможем достичь конечного ( целевого ) URL-адреса ;
    • Для параметра CURLOPT_RETURNTRANSFER задается значение true . Это позволяет сохранять HTTP — ответ в переменной;
    1. Необходимо проверить, не возвращают ли Curl ошибки, проверяя возвращаемые значения функций. Когда получаем значение false , можно получить информацию о последней ошибке для данной сессии Curl с помощью функции curl_error() ;
    2. Когда мы закончили обработку сессии 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 » , подготовленной дружной командой проекта Интернет-технологии.ру

    Adblock
    detector