METANIT.COM

Методы GET и POST
Синтаксис тернарного оператора

Как правило данные передаются из формы, иногда данные могут передавться через адресную строку. Для передачи данных существуют два специальных метода — это методы POST и GET, и соответственно, в зависимости от того каким методом мы отправляем данные, эти данные будут доступны в одном из двух предопределённых массивов: это массив $_POST и массив $_GET

Передача данных методом GET

Создадим в папке с уроком файл index.php

Создадим в форме поле input и кнопку button .

В адресной строке появится запись: ?name=Андрей — таким образом передаются данные методом GET.

Передаются они через адресную строку в формате ключ — значение .

— Где ключ — это имя поля: name ,

— а значение это то, что мы ввели в данное поле ( Андрей ).

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

По умолчанию данные из формы отправляются методом GET

передача данных методом GET:

get_post1

Передача данных методом POST

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

Для того, чтобы эту проблему избежать, эта проблема известна еще как » проблема F5«, мы должны перезапрашивать страницу .

Так как данные, при отправке методом POST, не видны, его можно применять при отправке важных,секретных данных, например, пароль и логин при регистрации и т. д.

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

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

Используем еще один атрибут формы action , в котором мы укажем, куда будет отправляться форма(action.php). По умолчанию, если мы не укажем action , то данные будут отправлятся на эту же страницу .

Создадим файл action.php — в нем распечатаем наши данные.

передача данных методом POST:

get_post2

Распечатка массивов

Распечатка массивов, только в том случае, если в них есть данные, переданные методом POST

Первый случай заключается в использовании функции empty ( пустой ).

Эта функция проверяет, не пуста ли, та или иная переменная и существует ли она вообще. Если переменная существует и она не пуста, тогда функция empty вернет ложь ( false ), если она пуста либо ее не существует, вернет — истину ( true ).

if (! empty ( $_POST )) echo ‘

' ; 
print_r ( $_POST );
echo '

‘ ;
>
if ( ! empty ( $_GET )) echo ‘

' ; 
print_r ( $_GET );
echo '

‘ ;
>
?>

Читайте также:  Python create empty set

распечатка массива данных, переданных методом POST с использованием функции empty :

get_post3

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

Сейчас кнопка не имеет имени и поэтому в массиве $_POST ее нет.

Если добавим (в index.php) имя кнопки , например: name=»send» , то данное имя появится в массиве $_POST . Добавим также значение value=»test» и в массиве появится «test» как значение поля формы ( кнопка — то же поле формы ) с ключем «send» .

Мы можем проверить (в action.php), существует ли у нас такая кнопка с помощью функции isset , которая проверяет, установленна ли переменная, не важно, есть значение у переменной или нет, главное чтобы она была.

Проверяем: если у нас существует в массиве $_POST элемент «send» , тогда мы распечатаем этот массив — это значит, что кнопка была нажата и форма была отправленна .

// если у нас существует в массиве $_POST элемент «send»,
// тогда мы распечатаем этот массив
if ( isset ( $_POST [ ‘send’ ])) echo ‘

$_POST

' ;
print_r ( $_POST );
echo '

‘ ;
>

if ( isset ( $_GET [ ‘send’ ])) echo ‘

$_GET

' ;
print_r ( $_GET );
echo '

‘ ;
>
?>

Распечатка массива данных, переданных методом POST с помощью проверки

существования в массиве $_POST элемент «send» :

get_post4

Чтобы данные принимала эта же страница (index.php) делаем в форме action=»» — пустым или action=»index.php» .
Выведем на странице браузера полученное имя:
Введенное имя: — if ( !empty ($_POST[ ‘name’ ])) — проверяем, существует ли переменная(инициализированна ли она) и не пуста ли она,
— echo $_POST[ ‘name’ ] — если она существует, то выведем ее,
— в противном случае выведем: Форма не отправлена .

textarea

Добавим еще одно поле textarea , с именем name=»text» .
С помощью функции nl2br , переносы строк в поле textarea , будут так же отображаться в браузере .

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

Синтаксис тернарного оператора

— если условие выполняется, тогда мы выполним выражение «да», если нет,
тогда мы выполним выражение «нет» (то, что идет после знака двоеточия).

В нашем случае: Введенный текст: ,
где:
— ! empty ( $_POST [‘text’ ]) ? — если у нас существует $_POST [‘text’ ] ,
— echo nl2br ( $_POST [‘text’ ]) — то его выводим,
— в противном случае выводим ‘Форма не отправлена’ .

В файле index.php запишем:

Источник

Передать post параметры php

Одним из основных способов передачи данных веб-сайту является обработка форм. Формы представляют специальные элементы разметки HTML, которые содержат в себе различные элементы ввода — текстовые поля, кнопки и т.д. И с помощью данных форм мы можем ввести некоторые данные и отправить их на сервер. А сервер уже обрабатывает эти данные.

Создание форм состоит из следующих аспектов:

  • Создание элемента в разметке HTML
  • Добавление в этот элемент одно или несколько поле ввода
  • Установка метода передачи данных. Чаще всего используются методы GET или POST
  • Установка адреса, на который будут отправляться введенные данные
Читайте также:  Python rotate images with

POST-запросы

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

     

Форма ввода данных

Имя:

Возраст:

Атрибут action=»user.php» элемента form указывает, что данные формы будет обрабатывать скрипт user.php , который будет находиться с файлом form.php в одной папке. А атрибут method=»POST» указывает, что в качестве метода передачи данных будет применяться метод POST.

Теперь определим файл user.php , который будет иметь следующее содержание:

 if(isset($_POST["age"])) < $age = $_POST["age"]; >echo "Имя: $name 
Возраст: $age"; ?>

Для обработки запросов типа POST в PHP используется встроенная глобальная переменная $_POST . Она представляет ассоциативный массив данных, переданных с помощью метода POST. Используя ключи, мы можем получить отправленные значения. Ключами в этом массиве являются значения атрибутов name у полей ввода формы.

Например, так как атрибут name поля ввода возраста имеет значение age ( ), то в массиве $_POST значение этого поля будет представлять ключ «age»: $_POST[«age»]

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

Теперь мы можем обратиться к скрипту form.php и ввести в форму какие-нибудь данные:

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

И по нажатию кнопки введенные данные методом POST будут отправлены скрипту user.php :

массив <img decoding=

Форма ввода данных

Имя:

Возраст:

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

Отправка формы в PHP

Стоит отметить, что в принципе мы можем отправлять формы и запросом GET, в этом случае для получения тех же значений формы применяется массив $_GET , который был рассмотрен в прошлой теме:

      if(isset($_GET["age"])) < $age = $_GET["age"]; >echo "Имя: $name 
Возраст: $age"; ?>

Форма ввода данных

Имя:

Возраст:

Источник

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

С точки зрения разработчика форма — это набор HTML-элементов, таких как , , и пр., которые заполняются пользователем, отправляются на сервер и обрабатываются с помощью PHP.

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

Если мы заполним эту форму любыми значениями и нажмём на кнопку, то переместимся на страницу с примерно таким URL: /?title=123&content=456 .

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

Мем с парнем, задумчиво смотрящим в монитор

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

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

Читайте также:  Target text with javascript

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

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

Соответственно GET-параметр — это параметр, передаваемый в URL-адресе. Например, разберём URL /index.php?name=Vasya&price=1000 по частям:

  • /index.php — ссылка на сам скрипт
  • ? — символ, с которого всегда начинается перечисление GET-параметров
  • name=Vasya — это первый GET-параметр с ключом name и значением Vasya
  • & — разделитель между GET-параметрами
  • price=1000 — это второй GET-параметр с ключом price и значением 1000

Ну а раз мы эти параметры передали, значит теперь можем получить их в PHP. Для этого существует суперглобальный массив $_GET .

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

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

Когда вы отправляете форму, браузер получает ключ и значение каждого элемента (ключ указывается в атрибуте name , значение — то, что ввёл пользователь) и подставляет их в новый URL-адрес, на который затем и переходит.

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

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

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

Метод POST

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

Однако у этого метода есть недостаток — GET-параметры видны в адресной строке. Это значит, что введённые в форму логин и пароль будут передаваться в URL-адресе, а значит видны в истории браузера, что очень нехорошо.

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

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

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

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

Данные, передаваемые методом POST, лежат в суперглобальном массиве $_POST . Теперь можно переписать нашу форму, чтобы она передавала данные методом POST:

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

Обработчик формы — это URL, на который отправится форма. По-умолчанию форма отправляется на тот же URL-адрес, где она находится.

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

В примере выше запрос будет отправлен скрипту /some_url.php .

Источник

Оцените статью