Отправляет email-рассылки с помощью сервиса Sendsay

Самоучитель по HTML и CSS

  Все выпуски  

Самоучитель по HTML и CSS - 52


Дата: 2009-03-06

Архив Рассылки

Самоучитель HTML

Самоучитель CSS

Справочник по CSS

Рецепты HTML и CSS

Самоучитель по HTML и CSS

Добрый день.

Сегодня завершающий выпуск, посвященный формам.

Получение данных формы

Рассказ о формах был бы не полным, если не затронуть вопрос, что же делать с данными дальше, после того, как они введены пользователем и отправлены на сервер. Там информация уже анализируется и сохраняется в случае необходимости. Централизованное хранение данных на сервере, например в базе данных, позволяет организовывать множество интересных вещей — от обычных опросов до сложных форумов.

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

Использование глобальных переменных

Каждому элементу формы, у которого есть уникальное имя, заданное параметром name, сопоставлена переменная с тем же именем (со знаком доллара впереди). Так, в примере 18.1 показано создание формы с текстовым полем username. Поскольку для тега <FORM> не указано значение параметра action, данные формы будут отправлены на эту же самую страницу. Код PHP проверяет, установлено ли какое-либо значение у переменной $username и если да, то выводит его в окне браузера.

Пример 18.1. Использование глобальных переменных

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">

  <title>Глобальные переменные</title>
 </head>
 <body>

<?php
// Функция isset проверяет, присвоено ли переменной $username какое-либо значение 
  if (isset($username)) { 
// Выводим текст
    echo "Привет, $username";
  }
  else {
?>
  <form action="">

    <p><b>Введите ваше имя:</b><br>
     <input type="text" name="username"></p>
     <p><input type="submit" value="Отправить">

  </form>
<?php
  }
?>
 </body>
</html>

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

Замечание

В настройках PHP (файл php.ini) можно запретить работу с глобальными переменными (register_globals = Off), в таком случае указанный пример не будет работать должным образом. Желательно вообще обходиться без глобальных переменных, что делается обычно в целях безопасности.

Массивы $_GET и $_POST

Существуют массивы для хранения данных, переданных через метод GET или POST — соответственно, $_GET и $_POST. Принцип работы с этими массивами достаточно прост. Если в форме используется метод GET, то для получения значения элемента формы достаточно указать $_GET["имя поля"], где имя определяется параметром name.

В примере 18.2 показано использование массива $_POST для получения данных формы.

Пример 18.2. Получение данных через метод POST

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
 <head>

  <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
  <title>Получение данных формы</title>
 </head>
 <body>

<?php
  if (isset($_POST["test"])) {
   $answer = $_POST["test"];
   if ($answer == "a4") echo "Правильный ответ.";
   else echo "Вы ошиблись с ответом";
  }
  else {
?>
   <form method="POST">
    <p><b>Какой тег указан неверно?</b></p>

    <p>
     <input type="radio" name="test" value="a1">DT<br>
     <input type="radio" name="test" value="a2">DFN<br>

     <input type="radio" name="test" value="a3">DEL<br>
     <input type="radio" name="test" value="a4">DV<br> 
     <input type="radio" name="test" value="a5">DL<br> 
    </p>

    <p><input type="submit" value="Ответить"></p>
   </form>
<?php
  }
?>
 </body>

</html>
Copyright 2007—2009 Влад Мержевич. По всем вопросам пишите по адресу vlad@htmlbook.ru

В избранное