Формы и PHP

Формы часто используют для получения данных от пользователя и отправки в скрипт на PHP. Их создают на языке HTML. Для этого предназначен тег form, а также вложенные в него. Пример формы:

<form action=’run.php’ method=’GET’>

<p>

<label for=’n’>Имя:</label>

<input type=’text’ name=’name’ id=’n’ placeholder=’введите имя’>

</p>

<p>

<label for=’d’>Дополнительная информация:</label>

<textarea name=’add_info’ id=’d’ placeholder=’введите дополнительную информацию’></textarea>

</p>

<p>

<button type=’submit’>Отправить сведения</button>

</p>

</form>

В её поле action вписан адрес скрипта, который будет обрабатывать введенные данные. Атрибут method позволяет выбрать метод отправки. При использовании значения GET отправка производится через адресную строку браузера в виде run.php?name=Игорь&add_info=трудоустроен. Параметр POST позволяет отправлять сведения соответствующим методом. В этом случае они будут отправлены в теле HTTP-запроса и в адресной строке видны не будут.


Тег p использован просто для того, чтобы каждый параметр вводился на отдельной строке и с отступом. Тег label задает метку, которая пишется перед полем ввода. Эта метка привязывается к полю атрибутом for, через идентификатор.


Основные же элементы внутри этой формы — теги input и textarea. Они предназначены для ввода информации пользователем. Главный их атрибут — name. Он задаёт, под каким именем введенные в поля значения будут переданы в скрипт.


Теперь рассмотрим простой вариант скрипта для обработки этих данных. Он должен находиться в файле run.php в соответствии с адресом из атрибута action формы.

<?php

$name=$_GET[‘name’];

$add_info=$_GET[‘add_info’];

echo “Введенное имя — ”.htmlspecialchars($name).”<br/>”;

echo “Дополнительная информация:<br/>”;

echo htmlspecialchars($dop_info);

?>

В этом скрипте, после <?php, в первых двух строках выполняется получение введенных значений из формы в переменные $name и $add_info. Для этого используется суперглобальный массив $_GET, содержащий всю информацию, переданную методом GET. Если бы в форме использовался метод POST, то и тут надо было бы применить суперглобальный массив $_POST. Далее выполняется вывод на экран с помощью конструкции echo. Значения переменных выводятся не напрямую, а через функцию htmlspecialchars для фильтрации html-тегов и, таким образом, повышения безопасности.


Если исходная форма находится в том же файле, на который указывает её action, то можно подставлять ранее введенные значения обратно через атрибут value у полей ввода:

<input type=’text’ name=’name’ id=’n’ placeholder=’введите имя’ value=’<?=htmlspecialchars($_GET[‘name’])?>’>

В таком случае, если пользователь ошибся, он может не вводить значения заново, а просто исправить то, что ввёл до этого.

Для вывода значения на экран тут используется конструкция <?=значение?>. В качестве значения тут использовано $_GET[‘name’], обработанное функцией htmlspecialchars для обеспечения безопасности.


Комментарии

Популярные сообщения из этого блога

Почему не работает header('Location: site.com') в PHP-скрипте