Метод get и post php

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

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

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

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

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

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

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

Метод get и post php. Смотреть фото Метод get и post php. Смотреть картинку Метод get и post php. Картинка про Метод get и post php. Фото Метод get и post php

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

Метод get и post php. Смотреть фото Метод get и post php. Смотреть картинку Метод get и post php. Картинка про Метод get и post php. Фото Метод get и post php

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

Метод get и post php. Смотреть фото Метод get и post php. Смотреть картинку Метод get и post php. Картинка про Метод get и post php. Фото Метод get и post php

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

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

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

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

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

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

Источник

Обработка форм в PHP

Что такое форма

и пр., которые заполняются пользователем, отправляются на сервер и обрабатываются с помощью PHP.

Простой пример формы:

В этой форме есть 2 поля для заполнения (input и textarea), а также кнопка отправки формы.

Итак, давайте разбираться, что тут вообще происходит.

Метод get и post php. Смотреть фото Метод get и post php. Смотреть картинку Метод get и post php. Картинка про Метод get и post php. Фото Метод get и post php

Обработка формы с GET-параметрами

Формы можно передавать с помощью методов GET и POST. Указывается метод с помощью атрибута method тега form :

Если метод не указан, то по-умолчанию форма отправляется методом GET.

Формы, отправляемые методом GET, передают данные через URL-адрес.

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

Получить доступ к этим параметрам можно так:

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

Итак, создадим простенькую форму и добавим ей PHP-обработчик:

Теперь при отправке заполненной формы PHP выведет на экран то, что мы в эту форму написали.

Метод POST

По этой причине для отправки форм, которые могут содержать конфиденциальную информацию, нужно всегда использовать метод POST. При использовании метода POST данные передаются в теле http-запроса, а не в URL.

Метод GET в формах чаще всего используется для поиска чего-либо (товаров, статей и т.д.).

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

Это не так. Никакой дополнительной защиты у метода POST нет. Для защиты http-запросов нужно использовать https.

Изменение обработчика формы

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

Источник

Методы GET и POST. Использование и отличия

Метод get и post php. Смотреть фото Метод get и post php. Смотреть картинку Метод get и post php. Картинка про Метод get и post php. Фото Метод get и post phpМетод get и post php. Смотреть фото Метод get и post php. Смотреть картинку Метод get и post php. Картинка про Метод get и post php. Фото Метод get и post phpМетод get и post php. Смотреть фото Метод get и post php. Смотреть картинку Метод get и post php. Картинка про Метод get и post php. Фото Метод get и post phpМетод get и post php. Смотреть фото Метод get и post php. Смотреть картинку Метод get и post php. Картинка про Метод get и post php. Фото Метод get и post phpМетод get и post php. Смотреть фото Метод get и post php. Смотреть картинку Метод get и post php. Картинка про Метод get и post php. Фото Метод get и post php

HTTP методы GET и POST используются для отправки данных на сервер.

Чаще всего методы используются в HTML формах, гиперссылках и AJAX запросах.

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

Обработка запросов может отличаться в зависимости от типа сервера.

Какой метод использовать GET или POST, чем отличаются методы

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

Запрос GET передает данные в URL в виде пар «имя-значение» (другими словами, через ссылку), а запрос POST передает данные в теле запроса (подробно показано в примерах ниже). Это различие определяет свойства методов и ситуации, подходящие для использования того или иного HTTP метода.

Например, можно использовать метод GET в HTML форме фильтра товаров: когда нужно, исходя из данных введенных пользователем, переправить его на страницу с отфильтрованными товарами, соответствующими его выбору.

HTTP метод POST поддерживает тип кодирования данных multipart/form-data, что позволяет передавать файлы.

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

В каких случаях использовать POST и когда нужно использовать GET

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

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

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

Отсутствует защита конфиденциальной информации. Введенный пароль будет виден в адресной строке браузера, будет сохранен в истории посещенных сайтов.

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

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

Повторное обращение по конечной ссылке не приведет к повторной обработке запроса с введенными ранее параметрами.

Переход по гиперссылке с параметрами равнозначен отправке запроса через HTML форму.

Нет технической возможности поместить POST запрос в гиперссылку.

СитуацияGETPOST
Фильтр товаров
AJAX запросыИспользуются оба метода. Выбор зависит от контекста. Принципы выбора метода такие же, как и для HTML форм.

Сравнительная таблица HTTP методов GET и POST

В таблице ниже приведены основные свойства и отличия GET и POST методов.

Данные видны всем в адресной строке браузера, истории браузера и т.п.

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

Не более 2048 символов

Примечание: ограничения могут быть установлены сервером.

Страница с параметрами может быть добавлена в закладки

Страница с параметрами не может быть добавлена в закладки.

СвойствоGETPOST
Способ передачи данныхЧерез URLВ теле HTTP запроса
Защита данных
КэшированиеСтраница с параметрами может быть кэшированаСтраница с параметрами не может быть кэширована
Индексирование поисковыми системамиСтраница с параметрами может быть индексированаСтраница с параметрами не может быть индексирована
Возможность отправки файловНе поддерживаетсяПоддерживается
Поддерживаемые типы кодированияapplication/x-www-form-urlencoded
Использование в гиперссылках

ДаНет
Использование в HTML формахДаДа
Использование в AJAX запросахДаДа

Пример использования GET запроса

В примере показана простая HTML форма фильтра по нескольким параметрам.

HTML код формы, генерирующей GET запрос:

После отправки формы браузер переведет пользователя по ссылке:

Ссылка содержит URL документа, отвечающего за обработку и блок параметров. Знак «?» отмечает начало блока параметров GET запроса. Далее находятся пары «имя-значение», разделенные знаком «&». Имена параметров отделены от значений знаком «=».

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

Пример использования POST запроса

В примере показана простая HTML форма авторизации.

HTML код формы, генерирующей POST запрос:

После отправки формы браузер переведет пользователя по ссылке:

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

Запрос состоит из области заголовков и тела запроса.

Метод get и post php. Смотреть фото Метод get и post php. Смотреть картинку Метод get и post php. Картинка про Метод get и post php. Фото Метод get и post php

В заголовках указана служебная информация: URL обработчика, тип кодирования, параметры браузера и т.д.

В теле запроса содержатся передаваемые параметры. Формат тела запроса может отличаться в зависимости от выбранного типа кодирования.

Источник

Урок 16. PHP — POST & GET

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

Метод GET в PHP

Для начала разберем метод GET. Это когда все переменные и их значения передаются прямо через адрес. Сейчас на примере вы все увидите, и даже поймете как работает большинство сайтов и форумов.
К примеру, есть у нас html страничка такого вида:

Видите ссылку? Она сложная и состоит из нескольких частей. Давайте разберем все по полочкам:
https://myblaze.ru — адрес домена или, как его еще называют, хост.
index.php — страница на php, которая будет обрабатывать запрос.
? — символ разделения между адресом и блоком с переменными.
Далее идут переменные и их значения, которые разделены символом &.
name=Sergey — переменная name и ее значение Sergey.
age=22 — то же самое, переменная age, значение 22.

Все разобрали, теперь посмотрим как это обрабатывается в php, с помощью метода GET.
Страница index.php, как вы помните, мы передавали ей:

Для начала совет: ВСЕГДА проверяйте переменные на правильность: на пустоту, на соответствие допустимых значений и так далее. Так как все передается через адресную строку, то данные можно легко подменить и навредить сайту. Теперь по самому коду: мы, с помощью условного оператора, проверили переменные name и age на пустоту и, если они не пустые, то вывели их, а если пустые, то просто сообщили об этом.
Все просто, согласитесь? Например вы можете создать html страницу и в менюшке сделать ссылки через переменные, а в index.php обрабатывать переменную и отображать в зависимости от полученного значения ту или иную страницу. Ну об этом мы поговорим позже, в статье про создание сайта на php с нуля. Чтобы ничего не пропустить, советую подписаться на RSS.

Метод POST в PHP

Для демонстрации работы этого метода нам понадобится немного больше, чем простая строчка с адресом 🙂 Нужно будет создать html страницу с формой для заполнения, но ничего, я приведу готовый пример для вас:

Итак, мы создали html страничку с простой формой. Запомните, метод POST может использоваться только в форме.
Первый параметр формы — «method», он определяет метод, который мы будем использовать для передачи. Как вы могли догадаться, это либо GET, либо POST. При этом, если установлен GET, то все имена полей (в виде названий переменных), а также их значения, передаются по ссылке, как в разделе про метод GET. Если же установлен POST, то все названия переменных и значения будут передаваться как запрос браузера к веб-серверу. То есть в адресной строке их видно не будет. Во многих случаях это очень полезно. Также POST безопаснее, оно и понятно, ведь переменные с их значениями уже не так просто отредактировать, хотя тоже можно.

Второй параметр формы — «action». Это путь и имя файла скрипта, которому мы передаем данные. В нашем случае это index.php. Этот путь можно передавать и полностью, то есть так: action=«https://my_site.ru/index.php». Если не указать значение параметра «action», то вся информация будет передаваться главному скрипту, то есть индексной странице index.php вашего сайта, что вполне логично.

Теперь получим данные из нашей формы. Раз передавали мы в index.php, значит ниже будет код именно этой страницы:

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

Комментарии:

Хотелось бы более детальный разбор блока с GET’ом. В частноти:

И последнее, в статьях нет информации о «или», обозначающемся как || (или or) и соответственно «и», из примера статьи выше &&.

Александр, хорошо, спасибо, я поработаю над этим вопросом в ближайшее время 🙂

Миша, да не особо то поработал, работа в оффлайне отнимает почти все время, а после нее приходишь домой и уже от компьютера воротит =\ Ну как нибудь на выходных или еще как постараюсь все таки написать.

Александр, наконец дошли руки до вопроса.
Итак, в данном случае нам нужна именно empty() потому, что именно она определяет существование переменной. Для нас важно, чтобы в запросе были переданы оба значения, то есть и name и age, поэтому такое условие. Восклицательный знак перед empty это отрицание, то есть условие составлено таким образом, чтобы убедиться, что существуют (были переданы в запросе) обе переменные.

Хотя, наверное, все это вам объяснять не нужно, вы и сами знаете, это видно. Но для новичков думаю пригодится 🙂

«Запомните — метод POST может использоваться только в форме» — было бы здорово уточнить «только в форме или через AJAX», ибо через AJAX можно отправить что угодно и как угодно. Или я не прав?

Да, верно, в аяксе тоже используется ПОСТ, просто это выходит за рамки данного учебника (все таки он для начинающих) 🙂

Вот я как раз и есть начинающий и поэтому искренне запуталась)) Я только начала понимать, что такое аякс, а здесь прочитала, что «ТОЛЬКО В ФОРМЕ», — и расстроилась: опять что-то в голове не сходится. Мне нужно было прочитать еще две статьи, чтобы убедиться в том, что все-таки не только в форме)) Путаете новичков! 🙂

А тут теги отрезаются! Вот незадача то…
только через form ))

Причем, основной код будет (относительно) короткий, а больше всего места и внимания будут занимать именно-таки описания классов, да? А в основном коде все будет делаться методами местных экземпляров этих классов. Так принято писать или как-то иначе?

Рита, ничего себе полотно )
Я вас понимаю. На самом деле я сейчас тоже вовсю изучаю веб-разработку. Тяжело даётся, при том что нужно использовать целый зоопарк технологий, да ещё и к тому же не совсем ясно какие конкретные задачи можно выполнять с его помощью. Например, для меня это самый трудный этап. Ещё одну очередную CMS писать не охота, ибо тысячи их. Блог или форум — то же самое. Вот взялся за интернет магазин на бесплатной основе. Пилю потихонечку. Пришлось попутно изучать HTML и CSS, так как у любой логики должно быть визуальное отражение, а я не шибко чтобы крут в вёрстке.

Вроде на всё ответил 🙂

P.S. никогда не видел девушек, столь рьяно изучающих программирование. Я почему-то думал, что я один (из немногих) такой е*анутый. У меня разрыв шаблона 🙂

> Причем, основной код будет (относительно) короткий, а больше всего места и внимания будут занимать именно-таки описания классов, да? А в основном коде все будет делаться методами местных экземпляров этих классов. Так принято писать или как-то иначе?

Всё верно. Обычно файл который запрашивает клиент, это месиво из ссылок на модули, которые могут использоваться при генерации html-странице, которую запросил клиент, причём с теми или иными условиями.. Вероятно, клиент даже не запрашивал html-страницу, а он запросил URL. А веб-сервер этот УРЛ переварил и что-то клиенту выплюнул, предварительно конечно посоветовавшись с PHP интерпретатором 🙂

Нет, echo не умеет работать с объектами. Вернее, объект должен что-то вернуть, для этого из него надо что-то вызвать. Так что это строковые переменные. Язык пользователя лучше хранить в куках. На чужом хосте обычно не дают настраивать php.ini, так как он делится между несколькими такими пользователями. VDS/VPS другое дело. Тут лучше вам смотреть википедию.

Как вы всё это будете писать — без понятия 🙂
Но чтобы писать что-то на продакшен, нужно много времени тренироваться на кошках. Рекомендую всё же отдать это на аутсорс.

Вот это дискуссия тут, умеете, могете, молодцы! 🙂
Я правда рад, что люди объединяются и помогают друг другу!

Александр, неправда))) Объект может преобразовываться в строку при обращении к нему по имени из echo))) Если у него прописан «магический» метод __toString ))))))) Собсно в этом методе описывается, как объект превращается в строку, если кто-то пытается его использовать как строку (например, вывести на экран). Возможность добавлена в php 5.3, расширена в php 5.4.

Рита, тоже верно, однако это не стандартное поведение. В боевых условиях, объект ничего похожего на строку при попытке сделать его echo возвращать не должен :). Единственное применение, которое я нахожу это либо вывод ошибки, так чтоб никто не догадался, либо вывод информации об этом объекте. Встроенный var_dump, к примеру.
А для вывода текста или любой другой инфы нужно вызывать конкретные методы, или максимум публичные поля. А так для этого существуют геттеры/сеттеры.
Но я никогда не использовал данную «магию» ибо не было нужды. Да и вообще php сильно избыточен, так что во многих мануалах пишут «не используйте __GET()», «не используйте __SET()». И чаще всего пишут «НИКОГДА НЕ ИСПОЛЬЗУЙТЕ!».

Александр, и Вы правы))) Этот метод __toString скорее нужен для отладки, чем для работы. Аналогично яваскрипту)) Там тоже есть волшебный метод toString)) Но есть в php «волшебные» методы, которые очень даже нужно использовать в программах: например, тот же __construct() или ___sleep и __wakeUp() и другие. Они прекрасны. Или метод, который вызывается при клонировании объекта. Полезная штука.. На тему «избыточен» не знаю, не знаю. Я бы сказала изобилен)))) Есть опытные себе вполне разработчики, которые не знают, как пользоваться namespace, а я вот только начинаю, и уже понимаю, что это ключевое слово будет у меня звучать и звучать))) Ну т.е.реально есть выбор. Можно писать go to, а можно писать do while и break; В том же яваскрипте нет такого изобилия.
Мануалы, в которых часто пишут НИКОГДА НЕ ИСПОЛЬЗУЙТЕ не уважаю. Уважаю те, в которых очень подробно описывают все подводные камни и оставляют на усмотрение программисту. Ибо мой код — мои правила… Хоть и стараюсь всеми ушами прислушиваться и просто как художественную литературу читать чужой код, чтобы учиться организации кода и разным хитрым разворотам.. и оптимизации кода.. и стилю кода.. и очень стараюсь соблюдать все проблелы-табуляции-максимальную длину строки-комментарии, осмысленные имена всех переменных только на английском (честно смотрю в словаре, если не знаю, как это по-английски, чтобы грамотно назвать переменную) и пр., призванное увеличить читабельность, все равно «мой код — мои правила» — это то, что я люблю в программировании..
Я, скорее всего, быстро выброшу мануал, в котором много «НИКОГДА НЕ ИСПОЛЬЗУЙТЕ» или «Есть такая возможность, но лучше использовать другие»

Есть объяснение «никогда не используйте», связанное с тем что сильно жрёт память, или необоснованно долго выполняется скрипт.

Я не говорю что все магические методы плохи, и конструкторы/деструкторы это нормально, как бы это основы ООП.

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

go to тоже использовать не надо… хотя есть крайне редкие ситуации, когда он нужен.

У меня до сих пор куча вопросов про наследование. Так что да, php для меня пока тёмный лес, и мне проще ориентироваться по советам опытных программистов, которые пишут «не используйте» не из-за вредности, а из-за багажа опыта 🙂

Мне больше нравится такой подход: «Если перебирать числовой массив циклом for — это будет работать быстрее, чем цикл foreach в аналогичной ситуации». Статья про атрибуты и св-ва DOM-объектов в яваскриптах, там комментарии. Один комментирует: никогда не используйте setAttribute чтобы переключить галочку в чекбоксе! И все. А другой чувак дальше пишет: Я почитал спецификацию, атрибуты инпутов синхронизируются со свойствами DOM-объектов только в одну сторону, т.е.при изменении атрибута «checked» свойство и не должно меняться. Поэтому нет никакой гарантии, что во всех браузерах это будет стабильно работать. И действительно — работает через раз. Используйте obj.checked = true;
Разница заметна? Именно поэтому начинаю не уважать мануалы с фразами «НИКОГДА НЕ ИСПОЛЬЗУЙТЕ». Засоряет мозг, не давая понимания… «Багаж опыта» невозможно передать фразами с ключевым словом «НЕ»))) Серьезно, советую выбросить книжки, в которых много такого типа фраз — по таким учишься неполноценно.

А есть какие-то сформулированные вопросы про наследование?)) Давайте сюда хотя бы маленькую часть Вашей кучи) Очень интересно!

Ок, короткий вопрос про наследование — нахрена оно мне надо? Да простит меня администратор данного сайта про жестокий оффтоп не по теме статьи.

Александр,
круто) Спасибо))

Прекрасная тема урока, понятно и четко написано. И не менее захватывающие комментарии. Предлагаю лучшим признать комментарий Риты — 12.05.2013 23:47. И еще красиво написано — — 13.05.2013 18:57. )))

И кстате у тебя тут полно всякой фигни которую ты вообще не паяснил, например Граберры или как их там, ты только паяснил что они делают а пример и то как ими пользоватся или где их найти(ну ты понял, код) не предоставил. И указал какую то ссылку которая ведет на скачку денвера, хотя хотели мы скачать дополнительные модули PHP5

Ох))) Перечитала свои старые комментарии тут (Под именем Рита))) Ностальжи!)))
Сейчас я уже пишу на PHP и на Parser, и мой собственный ход мыслей кажется несколько странным и таким далеким))))

А разве нельзя всё это прописать на одном файле?

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

И не надо отвлекаться от формы. Заполнил — получил ответ. Ещё раз и ещё, ещё…
Правда, у меня в разработке не имена с возрастом, а маленькие приложения по отгадке слов, предложений, изображений. Для этого, как мне кажется, не зачем форму и задачу в разные файлы разводить.

Может кто знает как получить данные исполняемого файла на удаленном сервере который возвращает некие параметры. Как их вывести на свою страницу?

Хороший урок.
Но я никак не могу понять как кнопка вызывает пхп код? А если у меня много кнопок на форме будет, как указать чтобы именно эта кнопка вызывала пхп код по обработке формы?

Доброго времени. Обьясните,пожалуйста, зачем в
«»
употребляется сплэш «/» в конце,после «value=»» «?

Вывод данных можно было и одной строкой записать:
echo «имя — «.$_POST[user_name].»возраст — «.$_POST[age].» лет»;
Зачем «echo» плодить?

Источник

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

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