Урок 16. PHP — POST & GET


Содержание

Урок 9. Что такое метод POST в PHP или как обработать форму?

Метод POST в PHP

Метод состоит из двух частей: HTML c формой и полями и файла-обработчика на PHP.

Если Вы ещё не сталкивались с формами и полями ввода в HTML или хотите освежить знания, то:
Урок 9. Работа с формами в html
Урок 10. Форма и элементы: флажок, радиокнопка, поле

Внимание! Для работы нам достаточно создать соответственно всего два файла.

Демонстрация Скачать исходники
Рассмотрим пример с комментариями — реализация авторизации пользователя на сайте :

Код HTML (файл post.html)

Теперь подробнее о методах передачи данных. Существует два вида GET (через url, открытый — можно изменить url вручную) и POST (через форму, закрытый). Отличие будет заключаться в содержании адресной строки, то есть url.

При получении данных переданных одним из этих способов в массив соответствующего методу типа ($_GET или $_POST) собираются данные. Также существует массив $_REQUEST, который может содержать и $_GET, и $_POST одновременно. Но это для других примеров. Рекомендую большинство данных передавать методом POST.

Теперь рассмотрим код обработчика.

Код PHP (в файле test_reg.php)

Вы можете видеть как в отдельные переменные мы записываем значение полей с соответствующими name в массиве $_POST, хотя также можно было собрать и в $_REQUEST.

В обработчике, пожалуй, проработаем условие авторизации — совпадают ли логин и пароль в форме с нашим выдуманным (соответственно Admin и Pass). И либо поздороваемся с входящим (Здравствуйте, Admin! Сегодня кофе или чай?), либо нет (Вы ввели неверную связку логин-пароль. Попробуйте ещё). Однако для создания полноценной авторизации Вам ещё надо ознакомиться с cookie, сессиями и базами данных. Но об этом позже.

Непосредственно в скрипте можно как угодно обрабатывать данные: дописывать, стирать, шифровать и так далее. Главное — это знать имя переменной (задаётся в HTML-форме) и дальше собирать их с помощью массивов $_POST, $_GET и $_REQUEST.

Создание POST/ GET запросов с помощью PHP

Создание 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 :

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

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

Выполнение GET-запросов с помощью PHP

Теперь мы уделим внимание использованию 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 , чтобы считывать содержимое меньшими фрагментами до тех пор, пока не будет достигнут конец файла:

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

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

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

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

Данная публикация представляет собой перевод статьи « Making POST Requests With PHP » , подготовленной дружной командой проекта Интернет-технологии.ру

PHP скрипты

Apache

PHP Скрипты

Для Дизайна Сайта

Актуальная информация apostas online у нас. | http://autoregion.com.ua автовышка купить автоподъемник в украине.

Поиск по Сайту

Самоучитель. Книги.

10.2: Передача данных HTML-формы

Рассмотрим атрибут method тега ‹form›. Он указывает, каким способом передавать данные из формы. Всего существует два метода: GET и POST.

Илон Маск рекомендует:  Property - Ключевое слово Delphi

Если использовать метод GET, то данные передаются посредством добавления их в конец строки запроса. Например, создайте файл test.html со следующим содержанием (листинг 10.2).

Листинг 10.2. Передача данных методом GET

‹html›
‹head›
‹title› Передача данных методом GET ‹/title›
‹/head›
‹body›
‹form action=»test.php» method=»get»›
‹input type=»Text» name=»text»›
‹input type=»Submit» value=»Go!»›
‹/form›
‹/body›
‹/html›

Затем нам понадобится файл с именем test.php, который будет запускаться при нажатии кнопки Go!. Его содержание пока нас не интересует, поэтому оставьте его пустым. Запустите файл test.html в браузере, введите в поле текст (например, «qwerty») и нажмите кнопку Go!. Результат смотрите ниже.

Обратите внимание на адресную строку браузера. После знака вопроса следует выражение text=qwerty. Другими словами, пользователь может видеть, какие данные передаются серверу. Метод GET используется по умолчанию.

Если применить метод POST, то результат будет иным (см. рис. ниже).

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

лабы по информатике, егэ

лабораторные работы и задачи по программированию и информатике, егэ по информатике

PHP занятие 8. Передача данных

Методы передачи данных форм в php

Использование методов GET и POST

Атрибуты тега FORM


Get – данные из формы передаются на сайт, указанный в поле адреса браузера, с помощью знака « ? » и « & »

Использование метода GET

POST — используется для передачи больших объемов данных или когда нужно скрыть значения передаваемых параметров

Переданные сценарию параметры не отображаются в окне браузера

Суперглобальные переменные

При передачи данных формы на сервер формируются суперглобальные переменные — ассоциативные массивы, содержащие передаваемые значения:

  • $_GET[] — ассоциативный массив, который содержит все значения, передаваемые в сценарий с помощью метода формы GET .
  • $_POST[] – ассоциативный массив, который содержит все значения, передаваемые в сценарий с помощью метода формы POST .
  • $_REQUEST[] – ассоциативный массив, который содержит все значение, передаваемые в сценарий с помощью методов POST и GET .

Рассмотрим пример использования метода GET

SLUSAR.SU

Логово Программиста

Изучаем PHP 7.№12. Передача данных — GET и POST. Отправка данных с форм.

Проще говоря GET используется для передачи небольших данных между страницами, а POST для отправки больших данных на сервер или для отправки данных с форм.
Все передаваемые данные имеют имя и значение, которые хранятся в глобальном массиве GET или POST. Получить доступ к значениям можно обратившись к имени: $_GET[‘имя’] или $_POST[‘имя’]. Но как отправить данные мы рассмотрим ниже.

Начнем с метода GET. Отправка гет запроса может выполняться как простой ссылкой, так и через форму. Например, нам нужно отправить данные name=test на страницу result.php. Чтобы передать запрос GET в ссылку, нужно в конце url поставить знак ? и написать сам запрос:

А на самой странице result.php мы эти данные должны считать:

Данные переданные методом POST отлавливаются аналогичным способом.

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

Все передаваемые данные будут видны в строке ввода на странице result.php . И меняя данные в строке ввода, можно получать другой результат. Поэтому такой способ не совсем безопасный.

Метод POST передает данные, нигде их не отображая. Поэтому его и спользуют для передачи данных из форм.

Давайте посмотрим небольшой пример. Создадим на сервере два файла index.php и result.php с таким содержимым:

index.php:

result.php

Попробуйте разобраться в коде и придумайте свои примеры запросов. И советую посмотреть сюда http://codrob.ru/lesson/15

2 идей о “ Изучаем PHP 7.№12. Передача данных — GET и POST. Отправка данных с форм. ”

Что за фигня? Говорите что это PHP 7 а по факту написано на PHP 4.
На PHP 7 как минимум используют filter_input()

filter_input() о.О
иди поси овец со своими домыслами…..

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


Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

Метод POST и GET в PHP

Для передачи данных в языке программирования PHP используют специальные методы — GET и POST.

Метод GET

В GET запросе, в приведенном примере сверху, передаются 2 параметра — id со значением 1 и lang со значением php. В PHP скрипте эти параметры можно получить следующим образом:

Метод POST

Метод POST — используется для передачи данных в http-заголовках Вашего сайта. Для пользователя будет не видны эти данные во время передачи, в отличии от GET запроса.

С POST запросом Вы уже встречались в уроке Формы для отправки данных. Тэг

Значения из данной формы передаются с помощью кнопки input с типом submit.

Получить данные POST запроса в PHP скрипте, можно так:

Напомню, в параметре action указывается адрес скрипта, к которому будет идти POST запрос. В параметре enctype указывается тип передаваемых данных, в данном случае значение «multipart/form-data» означает любой тип данных (включая файлы, текст и т.д.).

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

PHP: POST и GET запросы для начинающих

Да да, все когда-то учились чему либо. Единственное что в этом плане отличает людей — кому-то учения даются легко, а кто-то не может разобраться в сути вопроса долгие месяцы. Сегодня мы поговорим о POST и GET запросах в HTML\PHP.

Сами запросы POST и GET (далее просто запросы) давно проросли корнями во все Интернет ресурсы. Если вдруг когда нибудь и появится альтернатива данным технологиям, то наверное это будет не скоро, да и, наверное, не нужно. Потому что наши запросы вполне полно выполняют задачу обмена данными между Интернет страницами.

Давайте рассмотри сначала запрос типа GET. Создадим файл index.php со стандартным html кодом, а так же разместим на нем форму, пусть это будет форма заказа товара.

Здесь обратим внимание на тег form. Он имеет два параметра action и method. Первый отвечает за адрес страницы, на которую мы будем передавать наши данные, второй — за метод, которым эти данные будут передаваться. Внутри данного тега описываются набор наших данных, которые мы хотим передавать. Обязательно данным присваиваются имена (параметр name). Так же обязателен input типа submit, который является кнопкой, по нажатию на которую происходит отправка данных.

Илон Маск рекомендует:  Определение географической принадлежности IP-адреса

Давайте сохраним наш файл и откроем его в браузере.
Путь нашей страницы в браузере «…/index.php». На самой странице мы видим два поля для ввода и кнопку. Давайте вобъем в наши поля что-нибудь и нажмем на кнопку «Заказать». Наша страница обновилась. Давайте посмотрим на ее адрес: «…/index.php?orderName=Test&count=12». (я вбил в первое поле слово ‘Test’ во второе ’12’). Как мы видим адрес страницы немного поменялся. Дело в том что передача параметров GET запросом осуществляется путем их приписывания в строку адреса страницы. Параметры отделяются от основного адреса символом ‘?’, а разные параметры символом ‘&’. Структура параметров следующая: название_параметра=значение. Название параметра будет совпадать со значением атрибута name в поле input.
Давайте немного подредактируем код страницы:

Теперь нажмем на кнопку «Заказать» еще раз. Как мы видим страница обновилась, однако наши поля остались заполнены. Это произошло благодаря тому, что мы указали значение по умолчанию для наших полей. Причем эти значения — полученный параметр GET. Как мы видим в PHP коде GET параметры являются массивом со строковым индексом равным имени параметра. Если сейчас поиграться с адресом сайта и в нем поменять значения параметров и нажать кнопку «Enter», то мы опять заметим картину с обновлением страницы и заполнением нашей формы.

Очевидно что пересылать секретные или служебные данные в GET запросе неправильно (и не безопасно). Его лучше использовать для передачи, например, id новости, которую стоит взять из базы или имени страницы, которую стоит отобразить.

Другое дело POST запрос. Работает он аналогично, однако не сохраняет параметры в строке адреса. Изменим нашу форму:

Как видно изменилось не многое, Однако! Откроем нашу страницу, вобъем что-нибудь в поля и нажмем кнопку «Заказать». Все сработало аналогично, однако (однако), как мы видим в строке запросов красуется адрес «…/index.php» без всякого рода параметров. Таким образом мы как бы «скрыли» наши данные от посторонних глаз. Конечно понятие скрыли, достаточно условное, так как эти данные все равно можно перехватить, но это уже другая история. Давайте допишем в наш адрес параметры «…/index.php?orderName=Trololo&count=100» и нажмем «Enter». Как мы видим страница загрузилась, однако даже не смотря на передачу параметров, поля оказались пустые. Это говорит о том что несмотря на большую схожесть, данные виды запросов никак не пересекаются между собой и если есть необходимость стоит писать обработчик для каждого типа запроса отдельно.

Думаю на этом хватит. Азы вопроса, я думаю, описаны с головой.

И еще немного… Не стоит забывать о проверке передаваемых параметров. Если Вы точно знаете, что параметр должен являться числом, то присекайте все попытки передачи не числового значения и т.п…

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

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

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

GET запрос

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


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

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

isset() позволяет узнать существует ли переменная которая указана в скобках, то есть условие которое я описал в коде звучит так: Если существует переменная $_GET[‘blog’] то вывести содержимое этой переменной на экран. Вот что получилось:

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

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

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

Если существует глобальная переменная $_GET[‘a’] и глобальная переменная $_GET[‘b’] и глобальная переменная $_GET[‘с’] то вывести их на экран, вот результат:

Формы

Прежде чем мы перейдем к post запросам, необходимо разобрать, что такое формы? Почему нужно? Потому что глобальная переменная $_POST[»] создается именно через формы. Что такое форма? Это поля для ввода какой-нить информации пользователем. Поля бывают в одну строчку, большие поля, так же бывают радио кнопочки, чек боксы. Разберем все по порядку.

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

  • name=»имя» — Этим атрибутом прописывается имя формы, на мой взгляд не обязательный атрибут, но все же всегда заполняю
  • action=»Ссылка на файл» — Этим атрибутом определяется файл обработчик, а именно файл куда Вы посылаете данные
  • method=»post» — Собственно атрибут который говорит форме, что необходимо отправлять post запросы. Так же Вы через формы можете отправлять и get запросы, выставив свойство get а не post.

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

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

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

Я уверен, что вы не раз встречали такие поля, так что тут как говорится: «no comments»

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

  • Для поля ФИО я использовал одностроковое поле ввода. Атрибут name обязателен для заполнения, почему? Объясню ниже
  • Для Выбора пола я использовал радио кнопки, заметьте что атрибут name у них один и тот же. Это сделано для того что бы выбрать можно было лишь один пункт.
  • Страна проживания выводится списком, у списка есть атрибут name у пунктов же ( ) этого атрибута быть не должно.
  • Любимые цвета выбираются чек боксами. Каждый чек бокс имеет свой атрибут name. Сделано для того чтобы выбрать можно было несколько пунктов.
  • О себе принимает вид большого поля. Заметьте, что я использую атрибуты rows и cols. cols определяет сколько видимых символов может влезть по горизонтали, а rows определяет сколько пользователь увидит строк. С помощью этих атрибутов мы определяем ширину и высоту области.
  • Для кнопки, атрибут name не обязателен, но не для этого примера, в этом примере этот атрибут понадобится. Если в теге кнопки написать атрибут value=»» и в ведя в этот атрибут, например слово «отправить анкету» (value=»отправить анкету») то надпись на кнопке примет значение атрибута value.
Илон Маск рекомендует:  Что такое код ftp_get_option

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

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

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


POST запрос

Теперь напишем php код который позволит нам увидеть введенную нами информацию. Где хранятся данные? В случае с get запросом, наши данные лежали в глобальной переменной $_GET[»]. При post запросе, данные будут лежать в глобальной переменной $_POST[»]. В квадратных скобках, необходимо прописывать, как и в случае с глобальной переменной get, идентификатор. Вопрос, где этот идентификатор взять? Вот для чего нам необходим атрибут name у элементов форм! Именно эти имена и служат нам ключом в глобальном массиве post. Ну что ж, приступим к описанию скрипта:

Написанное нами условие if гласит: Если существует глобальная переменная $_POST[‘submit’] то выводим данные на экран. Эта глобальная переменная создается в случае если мы нажали на кнопку отправки, вот для чего в данном примере необходим атрибут name в кнопке. Вы вполне можете задаться вопросом, почему же у кнопки атрибут name не обязательный? Все довольно просто. Обычно программист не отслеживает нажатие кнопки, а отслеживает посланные данные. Для корректной работы, например формы контактов, необходимо отследить не нажатие кнопки, а правильность ввода информации, и узнать вводили ли эту информацию вообще. В нашем же примере мы не проверяли посланные данные, а просто отследили нажатие кнопки, для упрощение примера. Вот что у нас получилось:

Заключение

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

Работа с формами | Метод GET и POST в PHP

При разработке любого проекта, одной из самых основных вещей является общение с пользователем. Мы можем что-то у него спрашивать, и давать ему право на ответ (опрос), можем дать ему право написать свое мнение, о товаре или услуге, можем помогать ему посчитать стоимость наших услуг, если необходимо создать интернет магазин, и т.д.

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

Работа с формами в PHP и HTML

Формы обозначаются тегом form:

Атрибут method указывает каким методом будет производиться отправка формы. Существуют 2 метода – GET и POST. Подробнее от этом читайте чуть ниже, пока в краце расскажем об основных элементах формы:

Текстовое поле — Input text

Текстовое поле, в которое можно вводить информацию. Атрибут name – имя текстового поля, value – значение. Выглядят вот так:

Кнопка — Input Submit

Кнопка, используется для отправки форм. Выглядит вот так:

Текстовой блок — Textarea

Текстовой блок, обычно используется для написания сообщений большого размера. Атрибут rows, cols – длина и ширина.

Подробнее о формах читайте на нашем сайте, или в других источниках. Цель данного урока показать как обрабатывать формы средствами PHP.

Метод GET и POST при отправке форм

Методы GET и POST указываются в атрибуте method формы при ее инициализации:

Метод GET передает информацию в адресе страницы, метод POST – в заголовках. Чтобы лучше понять что такое метод GET и POST напишем скрипт, который будет отправлять наше имя и сообщение на сервер, а сервер выводить сообщение на экран.

В PHP данные полученные методом GET хранятся в переменной $_GET. Данные переданные методом POSTхранятся в переменной $_POST.

Напишем в начале код для работы с методом GET, потом методом POST.

PHP Передача спецсимволов методом GET и POST

Есть скрипт, который принимает определенный набор символов из формы. Все работает корректно, пока среди символов не появляются «+», «&», «\», «/» Подскажите пожалуйста, каким образом можно передать подобные данные? Заран

2 ответа 2

Вам нужно использовать функции urlencode и urldecode

Первая заменяет спецсимволы на корректное URL-представление, а вторая, соответственно, наоборот.

Если вы формируете строку для метода GET на стороне клиента (в браузере), потом отправляете, то используйте при формировании запроса в javascript функцию encodeURIComponent .

Если строка для метода GET формируется на стороне сервера, то используйте функцию urlencode для преобразования строки (и urldecode для расшифровки потом).

А вообще, для передачи данных лучше использовать метод POST.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками php post get или задайте свой вопрос.

Похожие

Подписаться на ленту

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

дизайн сайта / логотип © 2020 Stack Exchange Inc; пользовательское содержимое попадает под действие лицензии cc by-sa 4.0 с указанием ссылки на источник. rev 2020.11.11.35402

Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL