пример отправки post запроса php

Базовая работа с PHP CURL: GET, POST, JSON, Headers

В прошлой статье по написанию своего первого парсера я описал основы работы с cURL. Текущая статья будет одной из цикла статей по экскурсу в написание ботов и парсеров. Однако, эта статья, в основном, будет похожа на шпаргалку, в большей мере, чем на туториал.

PHP cURL основы

Отправка GET запроса из PHP cURL

Иногда стоит необходимость отправки GET-запроса, формируя URL-адрес из Query-параметров. Для таких случаев, можете воспользоваться встроенной PHP-функцией, формирующей URL-строку с параметрами из массива:

Теперь вы знаете, как склеить массив данных в URL из PHP.

Отправка POST запроса из PHP cURL

PHP cURL POST запрос обычно не выполняется с пустым телом. Запрос этого типа считается запросом на добавление данных (создание новой сущности в БД, к примеру) и обычно нам необходимо передавать серверу набор каких-то данных. Код отправки POST-запроса с передачей данных будет выглядеть так:

Отправка cURL запроса из PHP с собственными заголовками (PHP cURL Headers)

Отправка POST JSON запроса в PHP cURL

Очень часто, при написании ботов, имитирующих взаимодействие с API, приходится отправлять данные на целевой сервер в формате JSON. И так сложилось, что отправка Form-Data POST параметров отличается от алгоритма отправки JSON данных, потому, и передавать эти данные для cURL нужно по-другому.

Для того, чтобы корректно передать данные в формате JSON через PHP cURL, необходимо исходный массив с параметрами, перекодировать в JSON вручную, и заполнить этими данными тело (body) запроса. А так же, чтобы сервер понял, что это данные в формате JSON, нужно передать соответствующие HTTP-заголовки (о которых мы говорили выше).

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

Резюме

Работа всех этих опций, их работа и настройка подробно рассказано в этой статье. А так же, на закрепление этого материала, в следующей статье был изложен алгоритм написания ботов на PHP, советую почитать, и попробовать написать собственного бота, чтобы полноценно разобраться в этой теме. Эта статья охватывает большинство важных тем: отправка POST-запросов, обработка ответов, имитация браузера из PHP.

Subscribe to Блог php программиста: статьи по PHP, JavaScript, MySql

Get the latest posts delivered right to your inbox

Источник

cURL в PHP: примеры POST, GET запросов с headers, cookie, JSON и многопоточностью

В этой статье мы рассмотрим эффективные приемы работы с cURL, отправление POST, GET и т.д. запросов, работу с cookie, заголовки, JSON а также в конце статьи будут некоторые полезные инструменты, которые могут значительно облегчить вам работу с HTTP запросами.

GET запрос при помощи cURL

Для того, чтобы отправить запрос, нужно создать объект при помощи функции curl_init(), а затем следует настроить его.

Все настройки, которые вы можете найти по этой ссылке. Там вы найдете опции, которые мы будем устанавливать функцией curl_setopt, в дальнейших примерах.

Пример простого GET запроса при помощи cURL:

Если в результате сервер вернет нам редирект, то мы по нему автоматически не перейдем. А иногда это бывает полезно. Чтобы cURL автоматически шел по редиректу нужно установить опцию CURLOPT_FOLLOWLOCATION.

С установленной опцией скрипт автоматически перейдет по вернувшемуся редиректу и вернет ответ уже с итоговой страницы.

POST запрос при помощи cURL

Теперь давайте отправим post запрос на адрес https://httpbin.org/anything

Отлично, с GET и POST запросами в cURL мы немного освоились. Теперь разберемся с заголовками, которые мы можем отсылать в запросе.

Заголовки устанавливаются при помощи опции CURLOPT_HTTPHEADER Чтобы получше узнать, для чего нужна эта опция давайте попробуем отправить POST запрос в формате JSON

cURL: POST запрос в формате JSON

Отличия конфигурации JSON запроса от обычного POST запроса заключается в том, что мы кодируем поля при помощи json_encode() И добавляем заголовок Content-Type: application/json

cURL: GET запрос в формате JSON

GET запрос в формате JSON отправляется так же как и POST запрос, просто нужно CURLOPT_CUSTOMREQUEST установить в ‘GET’

cURL и другие виды HTTP запросов: PUT, DELETE, HEAD, PATCH, OPTIONS, CONNECT и т.д.

Стоп, Дмитрий, прекрати выдумывать виды запросов!

Ничего я не выдумываю: HTTP протокол предполагает множество типов HTTP запросов просто POST и GET являются более распространенными.

Чтобы отправить PUT запрос, нужно установить опцию CURLOPT_PUT таким образом:

Это делается по тому же принципу, как и CURLOPT_POST. Но что делать с остальным зоопарком запросов? Разве у cURL есть CURLOPT_DELETE или CURLOPT_HEAD? Нет.

Для того, чтобы отправлять другие виды запросов есть другая опция: CURLOPT_CUSTOMREQUEST

Вместо строки curl_setopt($curl, CURLOPT_POST, true); мы явно задаем имя запроса опцией CURLOPT_CUSTOMREQUEST:

Замечание: Не используйте эту возможность пока не убедитесь, что сервер поддерживает данный тип запроса.

Как получить заголовки ответа

В предыдущем примере мы научились посылать заголовки. Самый правильный способ принять заголовки:

Иногда можно встретить другой вариант получения заголовков ответа. К сожалению, они не совсем правильные и могут работать некорректно в некоторых случаях.

Рассмотрим такой пример:

Мы сначала определяем размер заголовка, с помощью CURLINFO_HEADER_SIZE затем вырезаем его из ответа. К сожалению, это может не срабатывать, когда используется прокси или в некоторых случаях редиректа.

Скачивание больших файлов с помощью cURL

Для того, чтобы скачать большой файл пригодится этот способ:

Обратите внимание, если вы будете использовать file_get_contents для скачивания файлов, то файл сначала загружается в оперативную память, а потом сохраняется на диск. Поэтому если файл действительно большой, то скорее всего вашему серверу не хватит памяти. Также к памяти будет требователен следующий код:

Здесь мы скачиваем файл при помощи cURL в оперативную память, а затем сохраняем его на диск. Не смотря на то, что этот способ не годится для скачивания больших файлов, с помощью него можно вполне сохранить простую веб страницу.

Параллельные cURL запросы в PHP

Для чего могут потребоваться многопоточные запросы? Например у нас есть много URL адресов:

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

Как выполнить 3 запроса одновременно? В этом нам поможет curl_multi_

Давайте решим конкретную задачу при помощи параллельных curl запросов. Нам нужно отправить одновременно 3 запроса.

Такие параллельные запросы выполняются значительно быстрее чем поочередные.

cURL запросы с сохранением и загрузкой cookie из файла

cURL позволяет нам установить cookie при передачи запросов, а также автоматически принимать и устанавливать cookie, которые нам возвращает сервер, сохраняя их между запросами.

Давайте рассмотрим такой пример:

Теперь cookie у нас хранятся в файле cookie.txt в директории со скриптом (если вы ничего не меняли). Если мы совершаем повторные запросы, то cURL автоматически берет и отправляет cookie на сервер, как и обычный браузер. Таким образом мы можем авторизироваться на сайте и сохранить сеанс между запросами.

Передача cookie без файлов

Иммитация браузера с помощью cURL

Иногда сайт, к которому мы обращаемся может фильтровать запросы, защищаясь от парсинга. Если для этого используются упрощенные способы защиты, например проверка User-Agent, то мы можем легко притвориться, что являемся реальным польователем, который взаимодействует с сайтом через браузер, мы можем послать заголовки и cookie, которые обычно посылает браузер.

В данном примере установлены заголовки, которые посылает Chrome.

В простых ситуациях этого хватает. Но если используется защита при помощи javascript или что-то более продвинутое, то здесь cURL бессилен, и следует использовать либо BAS либо Zennoposter. Либо если вы хотите попытать счастье с PHP, то Selenium.

Не используйте эти знания в противоправных целях.

cURL запросы через прокси

Простой пример для отправки запросов через proxy. Если ваш прокси предполагает авторизацию, то раскомментируйте соответствующие строчки.

Отправка файлов

Авторизация с помощью cURL

HTTP Авторизация

Чтобы с помощью cURL авторизироваться на сайте, который использует Basic HTTP-аутентификацию нужно установить опцию CURLOPT_USERPWD, в которой будет наш логин и пароль.

OAuth авторизация

Авторизация через форму

Давайте применим полученные нами знания и авторизируемся на каком-нибудь сайте. Для этого нужно посмотреть куда форма отправляет данные и отправить туда то же самое.

Допустим на сайте есть такая форма:

Тогда наш cURL запрос должен быть сформирован так:

Автоматическое построение запросов

Перевод консольной команды curl в PHP

И вот еще один сервис, который переводит консольную команду curl в PHP: https://incarnate.github.io/curl-to-php/

Так вы можете создать простые запросы на cURL в PHP не создавая их вручную.

Лайфхак

В консоли браузера, во вкладке сеть, вы можете кликнуть правой кнопкой мыши и скопировать любой запрос в виде команды cURL, а потом с помощью сервиса curl-to-php перевести запрос в PHP. Теперь вы вообще можете сконвертировать в cURL абсолютно любой запрос, который посылает ваш браузер.

Как работать с cURL гораздо проще

Вы можете спросить: почему у cURL такие кривые и страшные методы? У вас может возникнуть желание взять и создать обертку для работы с cURL, чтобы вы могли не писать каждый раз большие куски некрасивого кода, а писать все проще, например так:

К счастью, такая обертка уже написана и найти ее можно здесь: https://github.com/php-curl-class/php-curl-class

Просто установите ее при помощи: composer require php-curl-class/php-curl-class и не работайте с кривыми кусками кода, которые таковы вероятно потому, что cURL изначально консольное приложение.

POST и GET запросы без cURL

С помощью PHP мы можем отправить простой GET запрос используя функцию file_get_contents.

При помощи file_get_contents мы также можем отправить POST запрос.

Подробнее о том, какие опции можно передавать в stream_context_create, вы можете изучить здесь: http://docs.php.net/manual/ru/context.http.php

Другие инструменты для работы с запросами в PHP

Для работы с запросами есть еще более мощный инструмент: Guzzle

Несколько примеров на Guzzle

GET запросы на Guzzle

Разные типы запросов на Guzzle

Асинхронные запросы на Guzzle

Если интересно, то читайте: Guzzle Quick Start

Пишите комментарии, если что-то осталось непонятно.

Источник

Учимся работать с GET и POST запросами

пример отправки post запроса php. Смотреть фото пример отправки post запроса php. Смотреть картинку пример отправки post запроса php. Картинка про пример отправки post запроса php. Фото пример отправки post запроса php

пример отправки post запроса php. Смотреть фото пример отправки post запроса php. Смотреть картинку пример отправки post запроса php. Картинка про пример отправки post запроса php. Фото пример отправки post запроса php

пример отправки post запроса php. Смотреть фото пример отправки post запроса php. Смотреть картинку пример отправки post запроса php. Картинка про пример отправки post запроса php. Фото пример отправки post запроса php

пример отправки post запроса php. Смотреть фото пример отправки post запроса php. Смотреть картинку пример отправки post запроса php. Картинка про пример отправки post запроса php. Фото пример отправки post запроса php

Здравствуйте дорогой читатель Блога RS! Сегодня мы с Вами будем разбирать get и post запросы. Так же поговорим о формах в html.

Для чего нужны вышеупомянутые запросы? Если Вы экспериментировали с php то могли заметить, что при повторной загрузки страницы, весь код выполняется заново, я имею ввиду, что скрипт заново создает переменные, и манипулирует с ними. Но парой необходимо передать какие то данные из одного скрипта в другой, например при отправки содержимого формы. Вот тут то на помощь и приходят запросы, с помощью которых Вы можете передать значение переменных из одного скрипта в другой.

GET запрос

Вы могли заметить, что на большинство сайтов можно лицезреть вот такие адреса:

Тут, даже не зная php, можно догадаться, что мы обращаемся к файлу index.php Но то, что идет после знака вопроса, мало кто знает. Все довольно просто: ?blog=2 это объявление глобальной переменной «$_GET[‘blog’]» с значением «2». Таким образом я в скрипт передаю переменную которая отвечает за вывод информации из базы данных. Давайте напишем небольшой скрипт в котором Вы все наглядно увидите:

Мы используем оператор условий if() в качестве условия стоит вот такая строчка:

пример отправки post запроса php. Смотреть фото пример отправки post запроса php. Смотреть картинку пример отправки post запроса php. Картинка про пример отправки post запроса php. Фото пример отправки post запроса php

Думаю понятно пример отправки post запроса php. Смотреть фото пример отправки post запроса php. Смотреть картинку пример отправки post запроса php. Картинка про пример отправки post запроса php. Фото пример отправки post запроса phpСоздается глобальная переменная $_GET с идентификатором который мы объявили в адресной строке (в данном случае с идентификатором «blog»)

Теперь хочу пояснить один момент. Предположим нам необходимо объявить две переменные, как это сделать? Первая переменная объявляется после знака вопроса «?» Вторая же переменная объявляется после такого знака «&» (Если честно не знаю что это за знак пример отправки post запроса php. Смотреть фото пример отправки post запроса php. Смотреть картинку пример отправки post запроса php. Картинка про пример отправки post запроса php. Фото пример отправки post запроса php), вот пример объявление трех переменных:

Условие звучит так:

пример отправки post запроса php. Смотреть фото пример отправки post запроса php. Смотреть картинку пример отправки post запроса php. Картинка про пример отправки post запроса php. Фото пример отправки post запроса php

Формы

У формы есть атрибуты, перечислю самые распространенные:

Давайте создадим форму:

В качестве файла обработчика я поставил файл test.php так как именно в нем пишу для Вас примеры. Метод отправки я поставил post так как именно этим методам пользуются в 99.9% случаях. Так же я присвоил нашей форме имя — form

Теперь окунемся в мир элементов формы. Первым делом Вы должны понять, что почти все элементы являются тегом отличие лишь в атрибуте type у этих тегов. Давайте я перечислю используемые элементы форм:

пример отправки post запроса php. Смотреть фото пример отправки post запроса php. Смотреть картинку пример отправки post запроса php. Картинка про пример отправки post запроса php. Фото пример отправки post запроса php

Я уверен, что вы не раз встречали такие поля, так что тут как говорится: «no comments» пример отправки post запроса php. Смотреть фото пример отправки post запроса php. Смотреть картинку пример отправки post запроса php. Картинка про пример отправки post запроса php. Фото пример отправки post запроса php

Теперь давайте составим небольшую тренировочную анкету, с которой будем работать далее. Наша задача составить небольшую анкетку которая поведает нам имя заполнявшего, пол, из какой он страны, любимый цвет и поле текста где пользователь может добавить что-нить о себе. Вот что у меня получилось:

пример отправки post запроса php. Смотреть фото пример отправки post запроса php. Смотреть картинку пример отправки post запроса php. Картинка про пример отправки post запроса php. Фото пример отправки post запроса php

Обратите внимание, что почти у каждого тега есть атрибут value, для чего он? В него записываются данные которые Вы собираетесь перенести на другую страницу. Надеюсь понятно пример отправки post запроса php. Смотреть фото пример отправки post запроса php. Смотреть картинку пример отправки post запроса php. Картинка про пример отправки post запроса php. Фото пример отправки post запроса php

Теперь если запустить этот код в браузере, то мы увидим следующее:

пример отправки post запроса php. Смотреть фото пример отправки post запроса php. Смотреть картинку пример отправки post запроса php. Картинка про пример отправки post запроса php. Фото пример отправки post запроса php

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

POST запрос

пример отправки post запроса php. Смотреть фото пример отправки post запроса php. Смотреть картинку пример отправки post запроса php. Картинка про пример отправки post запроса php. Фото пример отправки post запроса php

Заключение

Ну что ж, за сегодня мы разобрали два метода передачи данных между скриптами, так же галопам познакомились с формами. Очень надеюсь, что эта информация Вам хоть где то пригодится. Если есть какие вопросы, или мысли, пишите комментарии. Удачи Вам, на сегодня у меня все!

Источник

Метод post php пример пост запроса

Подробно о методе post в php

Что такое метод POST?

Как обозначается метод отправки данных «POST» в форме?

Место обработки данных из метода POST?

Место(условно) где будет происходить обработка только два:

Данные будут обработаны:

Либо на этой странице.

Что нужно, чтобы отправить POST запрос!?

Для того, чтобы отправить post запрос потребуется:

Форма, из которой будет отправляться «post запрос».

Скрипт, который получит, обработает и выведет результат(если это требуется.)

Алгоритм отправки POST запроса!?

Алгоритм отправки данных методом post :

Обрабатываем данные отправление методом пост.

Какие данные отправляет метод POST

На живом примере(следующий пункт) разберем, как передаются данные в методом «POST».

Какой тип данных у POST?

Зачем нужно знать, какое тип у данных в методе POST?

Если вы знаете тип данных, то у соответствующих типах есть свои признаки поведения!

Если мы знаем поведение, то можем управлять этими данными.

Ниже рассматривается пример отправки методом post и получаем результат. и там же выводим массив «$_POST».

После нажатия на кнопку, вы можете вернуться сюда, и посмотреть, что вернет функция var_dump.

Получение массива POST с примером.

Для этого нам понадобится:

Форма из которой будем отправлять данные. Подробно на форме остановимся ниже.

Чтобы приять данные нужно создать такую запись в php, для вывода массива используем print_r:

Если вы размещаете такую запись внутри html документа, нужно, чтобы html понимал php

Соберем весь код для получения и вывода массива POST

Форма для отправки массива POST

У вас есть два варианта:

Просто нажмите на кнопку отправить и вы получите результат «массива POST».

Либо в полях ввода напишите свою информацию.

И нажимаем отправить!

Форма с методом POST

Разберем подробно из чего должна состоять форма для отправки «запроса POST».

Необходимый атрибут method, который будет указывать тип метода, в нашем случае это «POST».

Форму выведем ниже!

Далее нам нужно переданные данные из этой формы обработать!

Как получать данные отправленные методом POST

Для данного поля условие получения данных будет таким:

Полностью можем собрать получение пост запроса из этого input-a :

Тоже самое делаем со вторым полем ввода:

Мы рассмотрели два поля ввода!

Но ведь у нас есть кнопка отправить!

Для данной кнопки можно составить тоже условие и уже внутрь поместить два условия о которых мы сказали выше.

Это будет проверка на отправку данных, т.е. была ли нажата кнопка submit:

Живой пример отправки данных методом POST

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

Чтобы вы не ходили в поисках результата, нам потребуется вернуться к нашему результату в этом пункте, поэтому нам понадобится якорь

И для вывода переданных данных используем echo, использовали два типа кавычек ‘ и «

Полный код выше идущей формы с php обработчиком пост запроса!

Введите какие-то данные в поля ввода и нажмите отправить:

Как отправить POST запрос на другую страницу!?

Первое! Откройте страницу и посмотрите, что там написано!

Теперь наберите текст и отправьте данные. методом post? на другую страницу:

Как работает отправка post запроса на другую страницу!?

Нам понадобится опять форма для отправки каких-то данных:

+ использовали тип hidden(скрытое поле), в котором отправляем ссылку(прост пример. )

В указываем страницу. на которую будем отправлять pos запрос!

Код страницы для приема post запроса

На странице для приема данных переданных через post делаем все абсолютно аналогично, что и выше было рассказано! Создаем условия и проверяем были ли переданы данные методом post!

Пример страницы для приема пост запроса

Вы отправили данные:

Post запрос был отправлен со страницы’;

echo ‘Вы здесь ничего не увидите, пока не отправить пост запрос со страницы со страницы’;

Источник

Обрабатываем POST-запросы в PHP

пример отправки post запроса php. Смотреть фото пример отправки post запроса php. Смотреть картинку пример отправки post запроса php. Картинка про пример отправки post запроса php. Фото пример отправки post запроса php

Итак, в прошлом уроке мы вспоминали о том, как происходит работа пользователя с сайтом. Их общение происходит в форме запрос-ответ. Пользователь отправляет в запросе какие-то данные, а сервер возвращает какой-либо ответ, в зависимости от этих данных.

В предыдущем уроке мы научились работать с GET-запросами. Как мы помним, при этом способе данные передаются на сервер с помощью параметров в адресной строке. Такое бывает удобно, когда нам нужно поделиться ссылкой в которой эти параметры нужны. Например, у нас спрашивают, где в Москве купить шкаф. И мы скидываем человеку ссылку на поиск в Яндексе:
https://yandex.ru/search/?text=шкаф%20в%20москве%20купить

Он переходит по ней и прекрасно себя чувствует, потому что всё уже введено за него.

Однако, параметры в адресной строке – это не всегда уместно. Например, когда в параметрах содержится какая-то конфиденциальная информация: пароль, пин-код. И любой мимо проходящий человек может её увидеть. Как в такой ситуации быть? Использовать POST-запросы!

Что это такое? Да всё тот же запрос от клиента к серверу, только параметры передаются внутри тела запроса, а не в адресной строке. И увидеть их просто так не получится.

Что за тело запроса? Ну, это просто данные, которые передаются на сервер. При этом они скрыты от лишних глаз.

Чтобы отправить POST-запрос нужно в HTML-форме задать для атрибута method значение POST.

Данные, отправленные с помощью POST-запроса доступны в PHP в суперглобальном массиве $_POST.

Давайте выведем переданные скриптом выше значения login и password. Для этого в файл login.php положим следующий код:

Откройте теперь форму, введите в неё значения и нажмите кнопку «Войти».
Вы увидите введенные вами в форме данные, при этом они будут отсутствовать в адресной строке. Вуаля! Теперь никто не подсмотрит ваш пароль в адресной строке.
пример отправки post запроса php. Смотреть фото пример отправки post запроса php. Смотреть картинку пример отправки post запроса php. Картинка про пример отправки post запроса php. Фото пример отправки post запроса php

Как увидеть тело POST-запроса

Чтобы увидеть данные POST-запроса в браузере, в Google Chrome нужно перейти в режим разработчика. Нажмите клавишу F12, находясь в окне браузера. После этого вы увидите панель разработчика.
пример отправки post запроса php. Смотреть фото пример отправки post запроса php. Смотреть картинку пример отправки post запроса php. Картинка про пример отправки post запроса php. Фото пример отправки post запроса php

Перейдите во вкладку Network, а затем установите галочку напротив пункта Preserve log.

Теперь вернитесь на форму, и снова введите данные, после чего нажмите на кнопку «Войти».
пример отправки post запроса php. Смотреть фото пример отправки post запроса php. Смотреть картинку пример отправки post запроса php. Картинка про пример отправки post запроса php. Фото пример отправки post запроса php

Одновременно с тем, как вы нажмете на кнопку входа, вы увидите в панели разработчика запрос на login.php.
пример отправки post запроса php. Смотреть фото пример отправки post запроса php. Смотреть картинку пример отправки post запроса php. Картинка про пример отправки post запроса php. Фото пример отправки post запроса php

Нажмите на него, и справа откроются детали запроса. По умолчанию открывается исходный код ответа. Здесь можно увидеть то, что было сгенерировано с помощью PHP и отправлено веб-сервером в браузер.
пример отправки post запроса php. Смотреть фото пример отправки post запроса php. Смотреть картинку пример отправки post запроса php. Картинка про пример отправки post запроса php. Фото пример отправки post запроса php

Нас здесь интересует вкладка Headers. Перейдите в неё, и прокрутите содержимое в самый низ. Здесь вы увидите те данные, что браузер отправил на сервер.
пример отправки post запроса php. Смотреть фото пример отправки post запроса php. Смотреть картинку пример отправки post запроса php. Картинка про пример отправки post запроса php. Фото пример отправки post запроса php

Заключение

Вот так и работают POST-запросы под капотом. Используют их всегда, когда не нужно отображать детали запроса в адресной строке. Хорошие примеры: форма авторизации, ввод данных о кредитной карте. Такими данными лучше в адресной строке не светить.

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *