Главная :: Веб разработка :: Учебник по PHP :: Работа с формами
Если твой компьютер завис - выдерни шнур, выдави стекло.

Работа с формами

Обработка HTML форм с помощью PHP реализовано максимально просто и эффективно. Любой именованный (имеющий свойство name) элемент формы автоматически становится доступным скриптам PHP через переменные окружения $_GET['name'] и $_POST['name']. Первая переменная отвечает за данные передаваемые формой методом GET, а вторая содержит данные передаваемые методом POST. Аргумент соответствует имени элемента формы.

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

<form action="foo.php" method="post">
  <p>Введите Ваше имя:  <input type="text" name="username" />
  <p>Введите Ваш Email: <input type="text" name="email" />
  <p><input type="submit" name="submit" value="Подписаться" />
</form>

Вы вводите имя и адрес электронной почты в текстовые поля и нажимаете кнопку "Подписаться". После этого, вызывается страница foo.php и ей передаются данные формы методом POST. Посмотрим теперь как обрабатываются данные формы в скрипте foo.php.

<p>Уважаемый <?php echo htmlspecialchars($_POST['username']); ?>! <p>Ваш адрес электронной почты <?php echo htmlspecialchars($_POST['email']); ?> подписан на рассылку новостей сайта.

Результат выполнения скриптам

Уважаемый Карл Маркс!

Ваш адрес электронной почты capital @ karl.marks.de подписан на рассылку новостей сайта.

Как видно из примеров, данные из двух текстовых полей формы с именами username и email передаются на страницу foo.php переменными $_POST['username'] и $_POST['email'].

Для безопасности, рекомендуется провести обработку этих данных с помощью функции htmlspecialchars, которая преобразуется специальные символы HTML (амперсанд, одинарная и двойная кавычки, знаки 'больше чем' и 'меньше чем') в их HTML сущности (например, символ & преобразуется в &amp;). Это делается для того, чтобы избежать ввода данных, которые могли бы нарушить структуру документа.

Замечание. Вы можете передавать данные формы двумя способами: методами GET и POST. Какой из двух способов предпочтителен?