Урок 25 из 29
В прогрессе

25php $_GET — $_POST — $_REQUEST

Урок
Материалы

25php

Сегодня поговорим о форме отправки.
Как нам получить данные из формы.

Так какие формы мы знаем ?
Форма обратной связи,
Форма авторизации ,
Форма регистрации итд,
Форма нужна для передачи данных .

 

Давайте познакомимся с двумя методами Get и Post.
* $_GET — Переменные HTTP GET
* $_POST — Переменные HTTP POST

 

________________

Давайте создадим обычную HTML страницу и нам нужна форма

<!DOCTYPE html>
<html lang=»en»>
<head>
<meta charset=»UTF-8″>
<meta http-equiv=»X-UA-Compatible» content=»IE=edge»>
<meta name=»viewport» content=»width=device-width, initial-scale=1.0″>
<title>Document</title>

<style>
form {
display: flex;
flex-direction: column;
max-width: 500px;
justify-content: center;
align-items: center;
margin: 0 auto;
}
</style>
</head>
<body>
<form action=»send.php»>
<input name=»name» type=»text» placeholder=»name»>
<input name=»email» type=»text» placeholder=»email»>
<input name=»surname» type=»text» placeholder=»surname»>
<input name=»phone» type=»tel» placeholder=»phone»>

<button type»submit»»>send</button>
</form>

</body>
</html>

В атрибуте action=»send.php» мы указываем Файл, который будет обрабатывать эти данные,
Если мы ничего не укажем, то данные будут обрабатываться на этой странице
________________

Давайте укажем в атрибуте action путь до send.php и создадим файл send.php,

Теперь с помощью глобальной переменной Post мы можем вывести на экран данные

Ну для начала форме нам нужно указать метод пост

print_r($_POST);

Это массив также мы можем его пропустить через foreach

foreach($_POST as $v){
echo $v;
}

Также мы можем присвоить переменной определенный элемент массива

 

________________

Итак, давайте разберёмся какой метод нам выбрать для отправки данных
post или get ?

 

Для незначительных вещей как поиск на сайте можете использовать метод Get, во всех остальных случаях Используйте метод пост

________________

Давайте добавим нашу форму checkbox
<input type=»checkbox» name=»agree»>
Если мы посмотрим, то checkbox а у нас не водится
Если мы его отметим – то тогда он появится

Чтобы проверить есть ли в массиве checkbox для этого у нас есть две функции

isset — Определяет, была ли установлена переменная значением, отличным от null
empty — Проверяет, пуста ли переменная

Как работает на примере isset
Давайте попробуем вывести переменную которую мы не объявляли

echo $x;

Мы получим Предупреждение: неопределённая переменная $x
Тут нам и поможет функция isset
if (isset($x)) {
echo $x;
}
Мы проверяем если есть такая переменная то Выводим её

________________

Функция empty похоже на isset
Но она проверяет на пустоту

if (empty($x)) {
echo $x;
}
if (!empty($x)) {
echo $x;
}

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

if (!empty($_POST[‘agree’])){
print_r($_POST);
}

 

________________

Давайте добавим select нашу форму

<select name=»lang» id=»» multiple>
<option value=»ru»>ru</option>
<option value=»eng»>eng</option>
<option value=»fr»>fr</option>
</select>

Если нам нужно выбрать несколько языков
то мы можем указать что Select это массив
<select name=»lang[]» id=»» multiple>

Также мы можем этот массив пропустить через foreach
foreach($_POST[‘lang’] as $v){
echo $v . «<br>»;
}

 

________________

* $_REQUEST — Переменные HTTP-запроса
print_r( $_REQUEST);

Советую вам не использовать эту переменную цели безопасности


HOME TASK

Создать форму обратной связи Где будут поля

 

  1.  имя
  2.  фамилии
  3.   возраст
  4.  телефон 
  5. checkbox

 

1 Если не заполнены все поля вывести сообщение, что все поля обязательны 

 

2 Убрать все пробелы с помощью функции trim() 

 

3 Если возраст меньше 18 вывести сообщение, что вам ещё рано получать права.

 

4  Если пользователь не отметил checkbox, то вывести сообщение, что вы должны отметить checkbox.

5 Попробовать настроить отправку на почту с помощью функции Mail https://www.php.net/manual/en/book.mail.php

6 Прочитайте про функцию die

https://www.php.net/manual/ru/function.die.php

ПРИМЕР

if(empty($_POST[‘name’]) || empty($_POST[‘surname’])  || empty($_POST[‘age’]) || empty($_POST[‘phone’]) || !isset($_POST[‘chek’]) ){
echo «все поля обязательны»;
die;
}
$message = trim($_POST[‘name’]);
$message .= trim($_POST[‘?’]);
if($_POST[‘age’] ? ?? ){
  ?
  die;
}