Webzone Публикации PHP PHP — POST & GET

PHP — POST & GET

10:04 , 18 Июль 2019
PHP — POST & GET

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



Метод GET

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

К примеру, есть у нас html страничка такого вида:



<html>
<head>
<title>Страница с примером передачи переменных с помощью Get</title>
</head>
<body>
<a href=https://webzone.kz/index.php?name=Vasya&age=20>Ссылка</a>
</body>
</html>


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


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



<?php

 if (!empty($_GET["name"])&&!empty($_GET["age"])) 
 { echo " Получены новые вводные: имя - ".$_GET["name"].", возраст - ".$_GET["age"]." лет";} 
 else { echo "Переменные не дошли. Проверьте все еще раз."; }

?>

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



Метод POST

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



<html>
<head>
<title>Страница с примером передачи переменных с помощью Post</title>
</head>
<body>

<form method="post" action="index.php">
Заполняем поля для передачи информации:<br><br>
Укажите Ваше имя: <input name="user_name" type="text" maxlength="20" size="25" value="" />
<br><br> Укажите Ваш возраст: <input name="age" type="text" maxlength="2" size="3" value="" />
<br><br> <input type=submit value="Передать информацию"></form>


</body>
</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

 if (!empty($_POST["user_name"])&&!empty($_POST["age"]))
 {
 echo "Получены новые вводные:
"; echo "имя - "; echo $_POST["user_name"]; echo "
возраст - "; echo $_POST["age"]; echo " лет"; } else { echo "Переменные не дошли. Проверьте все еще раз."; } ?>

Не забываем проверять на пустоту и допустимые значения. Далее нужно уточнить, почему наши переменные называются именно user_name и age? А вы посмотрите на поля формы, которую мы создавали выше. Видите там input name=«user_name» type=«text» ? Вот здесь параметр name и задает имя переменной, которую мы получим с помощью этого поля. То же самое и с age. Надеюсь понятно. Ну а получение переменной и ее значения через POST почти не отличается от GET, который мы рассмотрели выше.

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

Вопросы / Комментарии / Отзывы


Нуреке
14:40 , 08 Август 2019

А в чем разница между isset и empty?

Администратор
15:16 , 14 Август 2019

Нуреке, isset() — проверяет переменную на существование, а также, что её значение не null. Если переменная существует и её значение не null, то функция вернёт true, все остальные случаи — это false;

empty() — проверяет переменную на существование и на пустоту. Если в переменной есть какое-то не пустое значение или true, то функция вернёт false, всё остальные случаи — это true;