Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

PHP и формы

.pdf
Скачиваний:
24
Добавлен:
15.03.2015
Размер:
126.98 Кб
Скачать

Обработка форм в PHP

Основное назначение php создание динамических страниц. Формирование таких страниц может быть осуществляться на основании данных, которые были введены пользователем в форму. Существует два способа позволяющих осуществлять обработку форм с помощью сценария.

1.когда форма расположена в файле html, а сам сценарий в отдельном файле

срасширением php.

2.форма и сценарий находятся в одном файле.

Для реализации первого способа необходимо создать файл с расширением html, который будет содержать форму.

<form method=”post” action=http://localhost/имя.php> Имя<input type=”text” name=”nam”><br>

E-mail <input type=”text” name=” mail”><br> < input type=”submit>

</form>

Отправка данных осуществляется при щелчке по кнопке. Независимо от метода передачи будет сформирована строка параметров (имя=значение)

name1=value1&name2=value2&name3=value3....

nam= value1& mail=value2

Имена параметров автоматически становятся именами переменных nam и mail, которые должны быть переданы на вход сценария. Так было до версии 4.1. Начиная с этой версии в целях безопасности, php настраивается таким образом, чтобы переданные значения не назначались переменной.

За назначение переменных отвечает параметр registr_globals в файле php.ini. Если его значение =on, то все полученные сценарием данные будут назначены соответствующим переменным. Если его значение =off (по умолчанию), то получить значение переменной можно обратившись к массиву, соответствующему способу (методу) передачи данных сценарию.

$_GET[] — ассоциативный массив, который содержит все значения, передаваемые в сценарий с помощью метода формы GET.

$_POST[] – ассоциативный массив, который содержит все значения, передаваемые в сценарий с помощью метода формы POST.

$_REQUEST[] – ассоциативный массив, который содержит все значение, передаваемые в сценарий с помощью методов POST и GET.

<?

Print "Уважаемый,

<b>

<font color=red

size=5>

".

$_POST["nam"]."</font>

</b>

<br>

".

"Ваш

E-mail".

$_POST["mail"]."зарегистрирован"

 

 

 

 

?>

Элемент <textarea> обрабатывается аналогичным образом.

Элемент <select> значение для пересылки в скрипт берётся из атрибута value тега option.

Элемент <radio>, чтобы обеспечить возможность переключения, каждый элемент из группы radio имеет одно и тоже значения атрибута name

<input type=radio name="akt" value="Друзья">Друзья<br> <input type=radio name="akt" value="Родители">Родители<br> <input type=radio name="akt" value="Братья">Братья<br>

$_POST["akt"]

Элемент формы <checkbox> позволяет выбрать из группы несколько значений, поэтому необходимо поместить их в массив.

<input type=checkbox name="prog[]" value="ASP">ASP <br> <input type=checkbox name="prog[]" value="SSI">SSI<br> <input type=checkbox name="prog[]" value="ISAPI">ISAPI <br>

Чтобы вывести выбранное значение в сценарий необходимо воспользоваться циклом foreach

Foreach ($_POST[“prog”] as $t)

{

print “$t <br>”;

}

Если не один из флажков не будет выбран, то переменной не будет существовать и PHP выдаст сообщение об ошибке. Чтобы обойти данную ситуацию, то можно вставить скрытый элемент, перед checkbox.

Иногда возникает необходимость узнать значение какой-либо переменной окружения, например метод, использовавшийся при передаче запроса или IPадрес компьютера, отправившего запрос. Получить такую информацию можно с помощью функции getenv(). Она возвращает значение переменной окружения, имя которой передано ей в качестве параметра.

<? getenv("REQUEST_METHOD");

// возвратит использованный метод echo getenv ("REMOTE_ADDR");

//выведет IP-адрес пользователя,

//пославшего запрос

?>

<h2>Форма для регистрации студентов</h2> <form action="33.php" method=POST>

Имя <br><input type=text name="first_name" value="Введите Ваше имя"><br>

Фамилия <br><input type=text name="last_name"><br> E-mail <br><input type=text name="email"><br>

<p> Выберите курс, который вы бы хотели посещать:<br> <input type=checkbox name='kurs[]' value='PHP'>PHP<br> <input type=checkbox name='kurs[]' value='Lisp'>Lisp<br> <input type=checkbox name='kurs[]' value='Perl'>Perl<br>

<input type=checkbox name='kurs[]' value='Unix'>Unix<br> <P>Что вы хотите, чтобы мы знали о вас? <BR> <textarea name="comment" cols=32 rows=5></textarea> <input type=submit value="Отправить">

<input type=reset value="Отменить"> </form>

<?

//создадим массивы соответствий курс-время его

//проведения и курс-его лектор

$times = array("PHP"=>"14.30","Lisp"=>"12.00", "Perl"=>"15.00","Unix"=>"14.00");

$lectors = array("PHP"=>"Василий Васильевич",

"Lisp"=>"Иван Иванович", "Perl"=>"Петр Петрович", "Unix"=>"Семен Семенович");

define("SIGN","С уважением, администрация");

//определяем подпись письма как константу define("MEETING_TIME","18.00");

//задаем время собрания студентов

$date = "12 мая"; // задаем дату проведения лекций //начинаем составлять текст сообщения

$str = "Здравствуйте, уважаемый " . $_POST["first_name"]

. " " . $_POST["last_name"]."!<br>"; $str .= "<br>Сообщаем Вам, что ";

$kurses = $_POST["kurs"]; // сохраним в этой переменной // список выбранных курсов

if (!isset($kurses)) { // если не выбран ни один курс $event = "следующее собрание студентов";

$str .= "$event состоится $date ". MEETING_TIME . "<br>"; } else { // если хотя бы один курс выбран

$event = "выбранные Вами лекции состоятся $date <ul>"; //функция count вычисляет число элементов в массиве

for ($i=0;$i<count($kurses);$i++){

// для каждого выбранного курса

$k = $kurses[$i]; // запоминаем название курса $lect = $lect . "<li>лекция по $k в $times[$k]";

// составляем сообщение $lect .= " (Ваш лектор, $lectors[$k])";

}

$event = $event . $lect . "</ul>"; $str .= "$event";

}

$str .= "<br>". SIGN; // добавляем подпись echo $str; // выводим сообщение на экран ?>

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]