Форма php: PHP: Работа с формами — Manual

Содержание

Формы в PHP. — it-black.ru

Формы в PHP. — it-black.ru

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

У каждой формы есть целевая веб-страница, которая должна быть загружена для обработки данных, отправленных пользователем. PHP-код просто проверяет наличие данных в форме, чтобы определить, вызывать ли ему вновь сценарий для создания формы или начать обработку полученных данных. Я расскажу все известные формы применяемые в php для создания сайтов.

Создание формы

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

Обе задачи решаются заключением форм в следующие теги HTML:


<form action = действие method = "метод" - элементы формы -</form>

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

Метод GET

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

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

Метод POST

Предпочтительным методом отправки данных формы является POST. Набор данных формы включается в тело формы при перенаправлении формы к интерпретатору PHP.

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

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

Данные передаваемой формы становятся в большей или меньшей степени безопасными, только если запрос защищен с использованием SSL, TLS или какого-то другого способа шифрования. Но к конечному пользователю или посетителю данные все равно поступают в открытом виде, поэтому для него так или иначе остается возможность просматривать и изменять данные.

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

Флажок (checkbox)

Флажки checkbox предлагают пользователю ряд вариантов, и разрешает выбор нескольких из них. Группа флажков состоит из элементов <input>, имеющих одинаковые атрибуты name и type (checkbox).

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


<input name="Имя переключателя" type="Тип" value="Значение">

Пример:


<input name="mycolor" type="checkbox" value="red" checked> Красный(выбран по умолчанию) 
<input name="mycolor" type="checkbox" value="blue"> Синий 
<input name="mycolor" type="checkbox" value="black"> Черный 
<input name="mycolor" type="checkbox" value="white"> Белый
Переключатель (radio)

Переключатели radio предлагают пользователю ряд вариантов, но разрешает выбрать только один из них. Переключатель (radio) имеет атрибуты name, type и value. Атрибут name задает имя переключателя, type задает тип radio, а атрибут value задает значение.

Если пользователь выберет переключатель, то сценарию будет передана строка имя=значение. При необходимости можно указать параметр checked, который указывает на то, что переключатель будет иметь фокус (т.е. будет отмечен по умолчанию) при загрузке страницы. Переключатели также можно объединять в группы, для этого они должны иметь одно и тоже имя.


<input name="Имя переключателя" type="Тип" value="Значение">

Пример:


 <input name="mycolor" type="radio" value="white"> Белый 
  <input name="mycolor " type="radio" value="green" checked> Зеленый (выбран по умолчанию) 
  <input name="mycolor " type="radio" value="blue"> Синий 
  <input name="mycolor " type="radio" value="red"> Красный 
  <input name="mycolor " type="radio" value="black"> Черный
Текстовое поле (text)

Текстовое поле позволяет пользователям вводить различную информацию.

При создании обычного текстового поля размером size и максимальной допустимой длины maxlength символов, атрибут type принимает значение text.

Если указан параметр value, то поле будет содержать отображать value-текст. При создании поля нельзя забывать указывать имя поля, т.к. этот атрибут является обязательным. Пример:


<input type="text" name="txtName" size="10" maxlength="5" value="Текст по умолчанию">
Поле для ввода пароля (password)

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


<input type="password" name="txtName" size="10" maxlength="5">
Многострочное поле ввода текста (textarea)

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

Многострочное поле ввода текста начинается с парных тегов <textarea></textarea>. Тэг name задает имя многострочного поля.

Также можно указать ширину поля(cols) и число строк(rows). При необходимости можно указать атрибут readonly, который запрещает редактировать, удалять и изменять текст, т.е. текст будет предназначен только для чтения.


<textarea name="Имя поля" cols="Ширина поля " rows="Число строк">Текст</textarea>
Скрытое текстовое поле

Позволяет передавать сценарию какую то служебную информацию, не отображая её на странице. Скрытое поле начинается с тега <input>, атрибуты которого являются name, type и value. Атрибут name задает имя поля, type определяет тип поля, а атрибут value задает значение поля. Пример:


<input name="email" type="hidden" value="[email protected]">
Кнопка отправки формы (submit)

Служит для отправки формы сценарию. При создании кнопки для отправки формы необходимо указать 2 атрибута: type=”submit” и value=”Текст кнопки”. Атрибут name необходим если кнопка не одна, а несколько и все они созданы для разных операций, например кнопки “Сохранить”, “Удалить”, “Редактировать” и т.д. После нажатия на кнопку сценарию передается строка имя=текст кнопки.


<input type="Тип" name="Имя кнопки" value="Текст кнопки">
Кнопка для загрузки файлов (browse)

Кнопка служит для реализации загрузки файлов на сервер. Объект browse начитается с парных тегов <form></form>. Начинающий тэг <form> содержит необходимый атрибут encrypt. Атрибут encrypt принимает значение multipart/form-data, который извещает сервер о том, что вместе с обычной информацией посылается и файл. При создании текстового поля также необходимо указать тип файла – “file”. Пример:


<form enctype="multipart/form-data" action="file.php" method="post"> 
Загрузить: <input name="my_file" type="file"> 
  <input type="submit" value="Отправить"> 
</form>
Рамка (fieldset)

Объект fieldset позволяет нарисовать рамку вокруг объектов. Имеет закрывающий тэг </fieldset>. Заголовок указывается в тэгах <legend></legend>. Основное назначение объекта – задание различных стилей оформления. Пример:


<fieldset> 
<legend>Наш новый урок по языку php.</legend> 
Текст, который будет помещен внутри рамки.
</fieldset>
Обработка формы

Для начала создадим форму на HTML:


<html>
<head>
  <title>Форма</title>
</head>
<body>
  <form name = 'myform' action = 'req.php' method = 'post'>
    Ваш логин: <input type = 'text' name = 'login' />
    <br />
    Ваш пароль: <input type = 'password' name = 'pass' />
    <br />
    <input type = 'submit' value = 'Войти' />
  </form>
</body>
</html>

Это пример классической формы авторизации пользователя. Мы уже рассмотрели два метода это GET и POST. Соответственно, в PHP существуют два массива: $_GET и $_POST, которые содержат данные, полученные каждым из этих методов. Также есть массив $_REQUEST, который содержит данные $_GET и $_POST одновременно. Теперь обработаем данные. Реализуем простой скрипт (в файле “req.php”):


<?php
  $login = $_POST['login'];
  $pass = $_POST['pass'];
  if (($login == "Admin") && ($pass == "AdminPass"))
    echo "Привет, Admin!";
  else echo "Доступ закрыт";
?>

В данном скрипте мы получаем данные, полученные из формы методом POST (из массива $_POST). Дальше проверяем логин и пароль и выводим: “Привет, Admin!” или “Доступ закрыт”. Аналогично, считываются и обрабатываются абсолютно любые данные из форм. Нужно только знать имя переменной и дальше использовать массивы $_POST, $_GET и $_REQUEST.