Php header request method post

Отправка данных из скрипта методом POST

HTML форма позволяет пользователю сформировать POST-запрос, который затем отсылается браузером. Мы сформируем такой запрос скриптом. Пусть у нас есть простая форма, состоящая из двух полей и кнопки для отправки данных:

action="/handler/action.php" method="post"> Имя: name="name" type="text" />
Пароль: name="password" type="password" />
name="submit" type="submit" value="Отправить" />

Обработчик формы action.php выводит в браузер текст, введенный в поля формы:

 echo 'Имя: '.$_POST['name'].'
'
; echo 'Пароль: '.$_POST['password'].'
'
;

Метод POST, в отличие от метода GET, посылает данные не в строке запроса, а в области данных, после заголовков. Передача данных аналогична методу GET: группы name=value объединяются при помощи амперсанда (&):

name=Евгений&password=qwerty

Кроме того, необходимо учитывать, что данные передаются в текстовом виде, поэтому все национальные символы следует подвергать кодированию при помощи функции urlencode() .

Отправка данных методом POST через сокеты

 $hostname = 'localhost'; $path = '/handler/action.php'; $content = ''; // Устанавливаем соединение с сервером $hostname $fp = fsockopen($hostname, 80, $errno, $errstr, 30); // Проверяем успешность установки соединения if (!$fp) die('

'.$errstr.' ('.$errno.')

'
); // Данные HTTP-запроса $data = 'name='.urlencode('Евгений').'&password='.urlencode('qwerty'); // Заголовок HTTP-запроса $headers = 'POST '.$path." HTTP/1.1\r\n"; $headers .= 'Host: '.$hostname."\r\n"; $headers .= "Content-type: application/x-www-form-urlencoded\r\n"; $headers .= 'Content-Length: '.strlen($data)."\r\n\r\n"; // Отправляем HTTP-запрос серверу fwrite($fp, $headers.$data); // Получаем ответ while ( !feof($fp) ) $content .= fgets($fp, 1024); // Закрываем соединение fclose($fp); // Выводим ответ в браузер echo $content;

Результат работы скрипта выглядит примерно так

HTTP/1.1 200 OK Date: Sat, 28 Jun 2008 07:53:19 GMT Server: Apache/2.0.55 (Win32) PHP/5.2.1 X-Powered-By: PHP/5.2.1 Content-Length: 42 Content-Type: text/html Имя - Евгений 
Пароль - qwerty

Отправка данных методом POST с использованием CURL

Помимо сокетов, обеспечивающих низкоуровневое обращение к серверу, PHP располагает специальным расширением CURL (Client URL Library).

 // Задаем адрес удаленного сервера $curl = curl_init("http://localhost/handler/action.php"); // Передача данных осуществляется методом POST curl_setopt($curl, CURLOPT_POST, 1); // Задаем POST-данные $data = 'name=Евгений&password=qwerty'; curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Выполняем запрос и выводим ответ в браузер curl_exec($curl); // Закрываем CURL соединение curl_close($curl);

С помощью функции curl_init() задается адрес удаленного сервера и путь к файлу на нем. В отличие от функции fsockopen() , необходимо задавать адрес полностью, включая префикс http:// , т.е. расширение CURL позволяет работать с несколькими видами протоколов (HTTP, HTTPS, FTP). Если соединение с указанным сервером происходит успешно, функция curl_init() возвращает дескриптор соединения, который используется во всех остальных функциях библиотеки.

Для того, чтобы сообщить CURL о том, что данные будут передаваться методом POST, необходимо задать параметр CURLOPT_POST . POST-данные устанавливаются при помощи параметра CURLOPT_POSTFIELDS .

По умолчанию библиотека удаляет HTTP-заголовки, возвращаемые сервером. Однако CURL можно настроить на выдачу заголовков, если установить при помощи функции curl_setopt() ненулевое значение параметра CURLOPT_HEADER .

P.S. Из-за ошибки библиотеки сокетов протокол HTTP 1.1 под Windows работает медленно. При работе скрипта использующего сокеты под управлением этой ОС, лучше использовать версию HTTP 1.0.

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

  • 1С:Предприятие (31)
  • API (29)
  • Bash (43)
  • CLI (99)
  • CMS (139)
  • CSS (50)
  • Frontend (75)
  • HTML (66)
  • JavaScript (150)
  • Laravel (72)
  • Linux (146)
  • MySQL (76)
  • PHP (125)
  • React.js (66)
  • SSH (27)
  • Ubuntu (68)
  • Web-разработка (509)
  • WordPress (73)
  • Yii2 (69)
  • БазаДанных (95)
  • Битрикс (66)
  • Блог (29)
  • Верстка (43)
  • ИнтернетМагаз… (84)
  • КаталогТоваров (87)
  • Класс (30)
  • Клиент (27)
  • Ключ (28)
  • Команда (68)
  • Компонент (60)
  • Конфигурация (62)
  • Корзина (32)
  • ЛокальнаяСеть (28)
  • Модуль (34)
  • Навигация (31)
  • Настройка (140)
  • ПанельУправле… (29)
  • Плагин (33)
  • Пользователь (26)
  • Практика (99)
  • Сервер (74)
  • Событие (27)
  • Теория (105)
  • Установка (66)
  • Файл (47)
  • Форма (58)
  • Фреймворк (192)
  • Функция (36)
  • ШаблонСайта (68)

Источник

Как передать данные POST-ом через header

как передать данные через header
у меня есть два файла — первый арена.пхп-выводит инфу о ботах(жизни броня и ударная мощь)! и при.

Как методом post передать данные не через submit, а через ссылку?
У меня сейчас выводится кнопка с ником, при нажатии на которую выводится подробная информация о.

Как передать данные через POST из php другому скрипту
Как передать данные через POST из php другому скрипт?

Как отсортировать данные и передать их по методу POST?
Помогите, пожалуйста, разобраться новичку. Необходимо сделать следующее: на страничке есть форма.

Эксперт PHP

я нашел нечто похожее здесь:

но не могу разобраться- это в моем направлении?

Добавлено через 8 минут

Добавлено через 26 секунд
ссылка не добавляется

Добавлено через 58 секунд

1 2 3 4 5 6 7 8 9 10 11 12 13
$post_data = 'username='.$_REQUEST['username']."&password=".$_REQUEST['password']; $content_length = strlen($post_data); $main_url=BASEDOMAIN; $subdomain=$client->subdomain; $location='http://'.$subdomain.".".$main_url.HTTP::getURL('cabinet'); @header('POST '.$location.' HTTP/1.1'); @header('Location: '.$location); @header('Connection: close'); @header('Referer: '.$subdomain.'.'.$host); @header('Content-type: application/x-www-form-urlencoded'); @header('Content-length: ' . $content_length); @header(''); @header($post_data);

Эксперт PHP

ЦитатаСообщение от SergTN Посмотреть сообщение

Ситуация такая.Есть главный домен(domen.ru),для в хода в кабинет пользователь вводит данные в domen.ru/cabinet/auth/sign_in.Там определяется все нормально с авторизацией и перекидывает его на его домен,который берется из базы(у каждого пользователя свой) например sub.domen.ru.Перекидывается через header в котором сформирован POST-запрос. HEADER

Эксперт PHP

ЦитатаСообщение от SergTN Посмотреть сообщение

Есть главный домен(domen.ru),для в хода в кабинет пользователь вводит данные в domen.ru/cabinet/auth/sign_in.Там определяется все нормально с авторизацией и перекидывает его на его домен,который берется из базы

ЦитатаСообщение от Jewbacabra Посмотреть сообщение

Цитата Сообщение от SergTN Посмотреть сообщение
Есть главный домен(domen.ru),для в хода в кабинет пользователь вводит данные в domen.ru/cabinet/auth/sign_in.Там определяется все нормально с авторизацией и перекидывает его на его домен,который берется из базы
Ну так пусть при успешной авторизации назначается id сессии и редиректить куда надо методом GET

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

Добавлено через 19 часов 56 минут

ЦитатаСообщение от Jewbacabra Посмотреть сообщение

Источник

Как создать GET POST запросы с помощью PHP

Первый метод, позволяющий выполнить PHP POST запрос, заключается в использовании file_get_contents . Второй метод будет использовать fread в сочетании с парой других функций. Оба варианта применяют функцию stream context create , чтобы заполнить необходимые поля заголовка запроса.

Пояснение кода

Переменная $sPD содержит данные, которые нужно передать. Она должна иметь формат строки HTTP-запроса , поэтому некоторые специальные символы должны быть закодированы.

И в функции file_get_contents , и в функции fread у нас есть два новых параметра. Первый из них — use_include_path . Так как мы выполняем HTTP- запрос , в обоих примерах он будет иметь значение false . При использовании значения true для считывания локального ресурса функция будет искать файл по адресу include_path .

Второй параметр — context , он заполняется возвращаемым значением stream context create , который принимает значение массива $aHTTP .

Использование file_get_contents для выполнения POST-запросов

Чтобы в PHP отправить POST запрос с помощью file_get_contents , нужно применить stream context create , чтобы вручную заполнить поля заголовка и указать, какая « обертка » будет использоваться — в данном случае HTTP :

$sURL = "http://brugbart.com/Examples/http-post.php"; // URL-адрес POST $sPD = "name=Jacob&bench=150"; // Данные POST $aHTTP = array( 'http' => // Обертка, которая будет использоваться array( 'method' => 'POST', // Метод запроса // Ниже задаются заголовки запроса 'header' => 'Content-type: application/x-www-form-urlencoded', 'content' => $sPD ) ); $context = stream_context_create($aHTTP); $contents = file_get_contents($sURL, false, $context); echo $contents;

Использование fread для выполнения POST-запросов

Для выполнения POST-запросов можно использовать функцию fread . В следующем примере stream context create используется для составления необходимых заголовков HTTP-запроса :

$sURL = "http://brugbart.com/Examples/http-post.php"; // URL-адрес POST $sPD = "name=Jacob&bench=150"; // Данные POST $aHTTP = array( 'http' => // Обертка, которая будет использоваться array( 'method' => 'POST', // Request Method // Ниже задаются заголовки запроса 'header' => 'Content-type: application/x-www-form-urlencoded', 'content' => $sPD ) ); $context = stream_context_create($aHTTP); $handle = fopen($sURL, 'r', false, $context); $contents = ''; while (!feof($handle)) < $contents .= fread($handle, 8192); >fclose($handle); echo $contents;

Как выполнить в PHP GET-запрос

Теперь мы уделим внимание использованию fread и file_get_contents для загрузки контента из интернета через HTTP и HTTPS . Чтобы использовать методы, описанные в этой статье, необходимо активировать опцию fopen wrappers . Для этого в файле php.ini нужно установить для параметра allow_url_fopen значение On .

Выполнение POST и GET запросов PHP применяется для входа в систему на сайтах, получения содержимого веб-страницы или проверки новых версий приложений. Мы расскажем, как выполнять простые HTTP-запросы .

Использование fread для загрузки или получения файлов через интернет

Помните, что считывание веб-страницы ограничивается доступной частью пакета. Так что нужно использовать функцию stream_get_contents ( аналогичную file_get_contents ) или цикл while , чтобы считывать содержимое меньшими фрагментами до тех пор, пока не будет достигнут конец файла:

  fclose($handle); echo $contents; ?>

В данном случае обработки POST запроса PHP последний аргумент функции fread равен размеру фрагмента. Он, как правило, не должен быть больше, чем 8192 ( 8*1024 ).

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

Использование file_get_contents для получения URL-адреса сайта

Еще проще использовать этот метод при считывании файла по HTTP , так как вам не придется заботиться о считывании по фрагментам — все обрабатывается в PHP .

Источник

Читайте также:  Командная строка запустить файл python
Оцените статью