Web-программирование. Обработка HTML-форм
Web-программирование. Обработка HTML-форм
3
Web-программирование. Обработка HTML - форм
Лекция
Подготовлена Прохоровым В.С.
План
ВВЕДЕНИЕ
1. СОЗДАНИЕ HTML-ФОРМ
1.1. Элементы форм
1.2. Тег FORM - контейнер форм
1.3. Тег INPUT и способы его использования
1.3.1. Однострочные поля ввода
1.3.2. Поле ввода пароля
1.3.3. Скрытое текстовое поле
1.3.4. Независимые переключатели
1.3.5. Зависимые переключатели
1.3.6. Загрузка файлов
1.3.7. Кнопка отправки формы
1.3.8. Кнопка сброса
1.3.9. Кнопка отправки с индивидуальным рисунком
1.4. Ввод многострочного текста. Тег TEXTAREA
1.5. Списки выбора. Тег SELECT
1.5.1. Списки с единственным выбором
1.5.2. Списки множественного выбора.
2. ПЕРЕДАЧА ДАННЫХ С ПОМОЩЬЮ ФОРМЫ
2.1. Форма для передачи данных
2.2. Трансляция полей формы
2.3. Трансляция переменных окружения
2.4. Работа с cookies
2.4.1. Пример приложения с cookies
2.5. Обработка списков с множественным выбором
2.6. Обработка массивов
2.7. Особенности обработки независимых переключателей
2.8. Диагностика создаваемых массивов
3. КАКОЙ РЕЖИМ ВЫБРАТЬ: register_globals=off & on ?
3.1. Первый пример уязвимости
3.2. Второй пример уязвимости
3.3. Порядок трансляции переменных
4. ПРИЛОЖЕНИЯ, ХРАНЯЩИЕ ДАННЫЕ О РЕГИСТРАЦИИ ПОЛЬЗОВАТЕЛЕЙ В БАЗЕ ДАННЫХ MySQL
5. ЗАДАНИЕ НА САМОСТОЯТЕЛЬНУЮ РАЗРАБОТКУ
ЗАКЛЮЧЕНИЕ
ЛИТЕРАТУРА
Введение
Одно из наиболее распространенных приложений любого языка создания серверных сценариев - обработка HTML - форм. Web-программирование в большей части представляет собой обработку различных данных, введенных пользователем.
РНР облегчает задачу обработки и разбора форм, поступивших из браузера, так как в язык на самом нижнем уровне встроены все необходимые возможности. Поэтому программисту не приходится даже и задумываться над особенностями протокола HTTP и размышлять, как же происходит отправка и прием роsт-форм или даже загрузка файлов.
1. СОЗДАНИЕ HTML - ФОРМ
Работая с формами можно вводить текст в поле ввода, выбирать пункт меню, отмечать флажком правильный ответ, нажимать кнопку и т.д. При этом всегда ожидается от документа осмысленная реакция.
1.1. Элементы форм
Форма в HTML-документе реализуется тегом-контейнером FORM, в котором задаются все управляющие элементы -- поля ввода, кнопки и т.д. Если управляющие элементы указаны вне содержимого тега FORM, то они не создают форму, а используются для построения пользовательского интерфейса на WEB-странице, то есть для привнесения в нее различных кнопок, флажков, полей ввода. Обработка таких элементов производится индивидуально в рамках самого HTML-документа с помощью включенных в него скриптов. А могут вообще никак не обрабатываться. Например, управляющий элемент TEXTAREA часто используется для создания окна с полосой прокрутки внутри документа для вывода большого текста, который играет второстепенную роль. Обычно так отображаются тексты лицензионных соглашений, тексты больших комментариев или правила пользования данным WEB-ресурсом. Имена элементам формы присваиваются через их атрибут NAME. Каждый элемент формы имеет начальное, используемое по умолчанию, и конечное значения, которые являются символьными строками. Начальные значения элементов не меняются, благодаря чему может осуществляться сброс значений, указанных пользователем. Результатом этого действия будет установка всех управляющих элементов формы в своих первоначальных используемых по умолчанию значениях.
В HTML определены следующие типы управляющих элементов:
? Кнопки -- задаются с помощью элементов BUTTON и INPUT. Различают:
_ кнопки отправки -- при нажатии на них отправляются формы серверу;
_ кнопки сброса -- при их нажатии устанавливают управляющие элементы в первоначальные значения;
_ прочие кнопки -- кнопки, для которых не указано действие, выполняемое по умолчанию при их нажатии.
? Зависимые переключатели (переключатели с зависимой фиксацией) -- задаются элементом INPUT и представляют собой переключатели «вкл\выкл». Если несколько зависимых переключателей имеют одинаковые имена, то они являются взаимоисключающими. Это значит, что если одна из них ставится в положение «вкл», то все остальные автоматически -- в положение «выкл». Именно это и является преимуществом их использования.
? Независимые переключатели (переключатели с независимой фиксацией) -- задаются элементом INPUT и представляют собой переключатели «вкл\выкл», но в отличие от зависимых, независимые переключатели могут принимать и изменять свое значение независимо от остальных переключателей. Даже если последние имеют такое же имя.
? Меню -- реализуется с помощью элементов SELECT, OPTGROUP и OPTION. Меню предоставляют список возможных вариантов выбора.
? Ввод текста -- реализуется элементами INPUT, если вводится одна строка, и элементами TEXTAREA -- если несколько строк. В обоих случаях введенный текст становится текущим значением управляющего элемента.
? Выбор файлов -- позволяет вместе с формой отправлять выбранные файлы, реализуется HTML-элементом INPUT.
? Скрытые управляющие элементы -- создаются управляющим элементом INPUT.
1.2. Тег FORM - контейнер форм
Форма реализуется тегом-контейнером FORM. Тег своими атрибутами указывает адрес сценария, которому будет послана форма, способ пересылки и характеристику данных, содержащихся в форме. Начальный и конечный теги FORM задают границы формы. Их указание является обязательным.
Атрибуты тега FORM:
? action -- единственный обязательный атрибут. В качестве значения этого атрибута указывают URL-адрес запрашиваемой CGI-программы. Эта программа будет обрабатывать данные, содержащиеся в форме. Допустимо использовать запись MAILTO:URL, благодаря которой форма будет послана по электронной почте. Если атрибут ACTION все-таки не указан, то содержимое формы будет отправлено на URL-адрес, с которого загружалась данная WEB-страница.
? method -- определяет метод HTTP, используемый для пересылки данных формы от браузера к серверу. Атрибут METHOD может принимать два значения: get или post.
? enctype -- необязательный атрибут. Указывает тип содержимого формы, используемый для определения формата кодирования при ее пересылке. В HTML определены два возможных значения для атрибута ENCTYPE:
? APPLICATION/X-WWW-FORM-URLENCODED (используется по умолчанию).
? MULTIPART/FORM-DATA.
1.3. Тег INPUT и способы его использования
Тег INPUT позволяет создавать внутри формы поля ввода строки текста, имени файла, пароля и др. У INPUT нет конечного тега. Атрибуты и особенности использования INPUT зависят от способа его использования.
1.3.1. Однострочные поля ввода
Формат тега INPUT для создания поля ввода текстовой строки:
<input type-text
name=имя_параметра
[value=значение]
[size=paзмер]
[maxlen=длина]>
Тег создает поле ввода с максимально допустимой длиной текста maxlen и размером в size знакомест. Если задан атрибут value, то в поле будет изначально отображаться указанная строка. В квадратных скобках помечены необязательные атрибуты.
1.3.2. Поле ввода пароля
Пароль не должен отображаться на экране. Поле для ввода пароля:
<input type=Password
name=имя_параметра
[value=значение]
[size=paзмер]
[maxlen=длина]>
Вводимая информация в поле не отображается, а заменяется «звездочками».
Не рекомендуется устанавливать значение value (значение по умолчанию) из соображений безопасности. В окне браузера данное значение не отображается, но стоит просмотреть исходный HTML-код, пароль будет виден «невооруженным глазом».
1.3.3. Скрытое текстовое поле
Для передачи служебной информации (о которой пользователь даже не должен подозревать) используются скрытые поля. С помощью таких полей, например, могут передаваться параметры настройки:
<input type=hidden
name=имя
value=значение
Такие поля передаются серверу, но на Web-странице не отображаются.
1.3.4. Независимые переключатели
Пользователю, заполняющему форму у себя в браузере, дают возможность указать свои настройки с помощью выбора определенных значений. При этом приводятся сами эти значения, а рядом с ними помещается небольшое квадратное поле, в котором можно установить, либо убрать галочку. При этом значение, соответственно, будет либо выбрано, либо нет:
<input type=checkbox
name=имя
value=значение
[checked]
Если переключатель был включен на момент нажатия кнопки отправки данных, то сценарию будет передан параметр имя=значение. Если же флажок выключен, то сценарию вообще ничего не будет передано -- как будто нашего переключателя вообще нет.
Переключатель может быть по умолчанию либо включен, либо выключен. Чтобы переключатель был по умолчанию включен, необходимо для него указать атрибут checked.
Переключатель checkbox называется независимым, так как его состояние не зависит от состояния других переключателей checkbox. В одной форме может быть одновременно выбрано несколько переключателей
Листинг input.html. Тег input и способы его использования
<html>
<head>
<title>Тег input и способы его использования</title>
</head>
<body>
<form action=hello.php>
Текстовое поле ввода имени (login): <input type=text name=”login” value=””<br>
Поле ввода пароля (password): <input type=password name=”password” value=””<br>
Скрытое поле hid <input type=”hidden” name=”hid” value=”Hidden Field”<br>
<hr>
<input type=”checkbox” name=”varl” value=”Bapmнт 1”
checked>Bapиaнт 1 (по умолчанию)
<input type=”checkbox” name=”var2” value=”Bapиант 2”>Вариант 2<br>
<input type=”submit” name=”go” vа1ue = “Передать “ ><br>
<input type=”reset” vа1ue = “Очистить форму” ><br>
</form>
</body>
</html>
В окне браузера форма выглядит следующим образом:
1.3.5. Зависимые переключатели
Если в форме присутствует несколько одноименных зависимых переключателей типа radio, то включен из них может быть только один. При выборе одного переключателя все одноименные зависимые переключатели автоматически выключаются. В качестве имени переключателей воспринимается значение атрибута name.
Листинг radio_1.html. Форма с зависимыми переключателями
<html>
<head>
<title>Зависимые переключатели</title>
</head>
<body>
<form action=»http://localhost/sex.php» method=»post”>
<input type=radio
name=sex
value=male
checked
>
Мужчина
<input type=radio
name-sex
value=female
>
Женщина
<input type=submit
name=go
value=Передать
>
</form>
</body>
</html>
В окне браузера форма выглядит следующим образом:
Первый переключатель (со значением male) активен по умолчанию (установлен атрибут checked). Как только пользователь нажмет кнопку Передать, сценарию sex.php будет передан параметр sex (атрибут name обоих переключателей) со значением male. Если же пользователь выберет другой вариант (female), сценарию будет передано значение параметра sex.
1.3.6. Загрузка файлов
Тег INPUT позволяет создавать поле выбора файла для отправки. При этом формат тега таков:
<input type=file
name=имя
[vа1ue=имя файла] >
1.3.7. Кнопка отправки формы
Кнопка отправки служит для отправки сценарию введенных в форму значений. Синтаксис тега INPUT таков:
<input type=submit
[name=go]
value=Передать
Атрибут value определяет текст, который будет написан на кнопке отправки. Атрибут name определяет имя кнопки и является необязательным. Если значение этого атрибута не указывать, то скрипту будут переданы введенные в форму значения и все. Если же атрибут name для кнопки будет указан, то дополнительно к данным формы будет отправлена пара имя=значение от самой кнопки. Рекомендуется обязательно указывать этот атрибут.
1.3.8. Кнопка сброса
Кнопки reset сбрасывает форму -- устанавливает для всех элементов формы значения по умолчанию. Желательно, чтобы на форме была такая кнопка, особенно, если это большая форма. Наличие данной кнопки облегчает очистку формы, если были введены неправильные параметры:
<input type=reset
value=C6poc>
1.3.9. Кнопка отправки с индивидуальным рисунком
Можно использовать рисунок для отправки данных. При щелчке на этом рисунке произойдет то же, что и при нажатии на кнопку submit. Однако, кроме этого, сценарию будут переданы координаты места произведения щелчка на рисунке. Координаты будут переданы в формате: имя. х=коор_Х, имя. у=коор_У:
<input type=image
name=имя
src=рисунок>
Листинг cnopka_image.html. Кнопка отправки с рисунком
<html>
<head>
<title>Кнопка отправки с рисунком</title>
</head>
<body>
<form action=”http://localhost/hello.php” method=”POST”>
<hr>
Текстовое поле txt <input type=”text” name=”txt”<br>
<hr>
Поле ввода пароля pswd <input type=”password” name=”pswd”<br>
<hr>
Скрытое поле hid <input type=”hidden” name=”hid” value=”Hidden Field”<br>
<hr>
<input type=”checkbox” name=”varl” value=”Bapmнт 1”
checked>Bapиaнт 1 (по умолчанию)
<input type=”checkbox” name=”var2” value=”Bapиант 2”>Вариант 2
<hr>
<input type=”image”
name=”sub”
src=”image.png”>
<hr>
<input tupe “reset” value=”Очистить форму”>
</form>
</body>
</html>
В окне браузера форма выглядит следующим образом:
Когда пользователь щёлкает в каком-либо месте изображения, соответствующая форма передаётся на сервер с двумя дополнительными переменными: sub_x и sub_y. Они содержат координаты щелчка.
1.4. Ввод многострочного текста. Тег TEXTAREA
В HTML многострочное поле ввода реализуется с помощью тега TEXTAREA. Поле, создаваемое этим тегом, позволяет вводить и отправлять не одну строку, а сразу несколько. Формат тега TEXTAREA таков:
<textarea
name=имя
[со1s=ширина в символах]
[rows=высота в символах]
wrap=тип_переноса
>Текст по умолчанию </textarea>
Необязательные параметры cols и rows желательно указывать. Первый из них задает количество символов в строке, а второй -- количество строк в области. Атрибут wrap определяет, как будет выглядеть текст в поле ввода:
? Virtual -- справа от текстового поля выводится полоска прокрутки.
Вводимый пользователем текст выглядит разбитым на строки, а символ новой строки вставляется при нажатии клавиши Enter.
? Physical -- этот тип зависит от браузера и в разных браузерах может вести себя по-разному.
? None -- текст выглядит в поле в том виде, в котором пользователь его вводит. Если текст не умещается в одну строку, появляется горизонтальная полоска прокрутки.
Стоит заметить, что наиболее удобным является тип Virtual.
Внешний вид поля:
<textarea
name=”t_area”
со1s=”20”
rows=»5»
wrap=»virtual»
>Текст по умолчанию
</textarea>
Листинг textarea.html. Форма с многострочным текстом
<html>
<head>
<title>Многострочный текст</title>
</head>
<body>
<form action=”http://localhost/form.php” method=”POST”>
<hr>
<textarea
name=”t_area”
со1s=»20»
rows=»5»
wrap=»virtual»
>Текст по умолчанию
</textarea>
<hr>
<input tupe “submit” name=”go” value=”Передать”>
<input tupe “reset” value=”Очистить форму”>
</form>
</body>
</html>
В окне браузера форма выглядит следующим образом:
1.5. Списки выбора. Тег SELECT
1.5.1. Списки с единственным выбором
Список выбора позволяет выбрать один вариант из множества. Можно было бы использовать зависимые переключатели radio, но это не рационально. Например, если нужно, чтобы пользователь выбрал месяц, то один список будет занимать намного меньше места в окне браузера, чем целых двенадцать переключателей radio. Пример списка выбора, реализованного с помощью тега SELECT:
Листинг spisoc_1.html. Форма списка с единственным выбором
<html>
<head>
<title>Список с единственным выбором</title>
</head>
<body>
<select name=month size=l>
<option value=01 >Январь</option>
<option value=02>Февраль</option>
<option value=03>Mapт</option>
<option value=04>Апрель</option>
<option value=05 selected >Maй</option>
<option value=06>Июнь </option>
<option value=07>Июль</option>
<option value=08>Август </option>
<option value=09>Ceнтябрь</option>
<option value=10>Oктябрь</option>
<option value=11>Hоябрь</option>
<option value=12>Декабрь</option>
</select>
</body>
</html>
В окне браузера форма выглядит следующим образом:
Варианты выбора задаются с помощью тегов option. При отправке формы сценарию будет отослано значение value выбранного элемента списка.
Атрибут name определяет имя параметра, который будет передан сценарию. Если атрибут size равен 1, то список будет выпадающим. В противном случае список будет занимать n строк и будет «оснащен» полосой прокрутки. Значение, выбранное в списке по умолчанию, можно указать с помощью атрибута selected для соответствующего тега option. В приведенном примере месяц по умолчанию -- Май.
Атрибут value является необязательным. Если его не указать, то будет передана строка, заключенная в тег option. В нашем случае сценарию будет передан параметр month=Cентябрь (если value не указан).
1.5.2. Списки множественного выбора
С помощью тега SELECT можно создавать и списки множественного выбора. В таких списках можно выбрать не одно, а сразу несколько значений. Чтобы сделать список с множественным выбором, необходимо для тега SELECT указать атрибут multiple. Если пользователь выберет несколько вариантов, то сценарию будут переданы параметры в форме:
имя=значение&имя=значение . . . &имя=значение
Листинг spisoc_n.html. Форма списка множественного выбора
<html>
<head>
<title>Список множественного выбора</title>
</head>
<body>
<select name=”month2[]” size=4 multiple>
<option value=01>Январь</option>
<option value=02>Февраль</option>
<option value=03>Mapт</option>
<option value=04>Апрель</option>
<option value=05>Maй</option>
<option value=06>Июнь </option>
<option value=07>Июль</option>
<option value=08>Август </option>
<option value=09>Ceнтябрь</option>
<option value=10>Oктябрь</option>
<option value=11>Hоябрь</option>
<option value=12>Декабрь</option>
</select>
</body>
</html>
В окне браузера форма выглядит следующим образом:
2. ПЕРЕДАЧА ДАННЫХ С ПОМОЩЬЮ ФОРМЫ
Рассмотрим пример посылки сообщения из формы по электронной почте.
Листинг e_mail.html. Посылка сообщения из формы по e-mail
<html>
<head>
<title>Посылка формы по е-mail</title>
</head>
<body>
<FORM action=mailto: myaddres@mail.ru enctype=”text/plain” method=”post”>
Нажмите “Cброс” и заполните заказ.<BR>
<INPUT type=reset value=C6poc><BR>
<P>
<TABLE border=0 cellspacing=O cellpadding=5>
<TR>
<TD>Ваше имя:</TD >
<TD>
<INPUT type=text size=33 name=name value=”Прохоров Виктор Сергеевич”>
</TD>
</TR>
<TR>
<TD>Ваш адрес:</TD>
<TD>
<INPUT type=text size=33 name=email value=prohwik@mail.ru >
</TD>
</TR>
<TR>
<TD>Прислать:</TD>
<TD>
<INPUT type=text size=33 name=obj value=”Методические указания”>
</TD>
</TR>
</TABLE>
<INPUT type=submit value=”Послать заказ”>
</FORM>
</body>
</html>
Если поместить этот код в HTML-программу, то на гипертекстовой старичке возникнет картинка:
Пользователь нажимает кнопку «Сброс», и поля принимают значения, установленные по умолчанию. Форма заполняется пользователем, и по нажатию кнопки «Послать заказ» отправляется по адресу myaddres@mail.ru. Обычно браузер не сам отсылает форму, а поручает эту работу почтовой программе, установленной по умолчанию в операционной системе компьютера (например, Outlook). Письмо посылается в виде:
subjct: Форма отправлена из Microsoft Internet Explorer
name = Прохоров Виктор Сергеевич
value=prohwik@mail.ru
obj = «Методические указания»
Письмо составляется из пар имя=значение, которые выбираются по порядку из полей формы.
Можно написать простейший сценарий на РНР типа «Hello, world: сейчас 10 часов утра».
Однако этим сценариям недостает одного -- интерактивного взаимодействия с пользователем.
Поставим задачу написать сценарий, который принимает в параметрах две величины: зарегистрированное имя и пароль пользователя. Если зарегистрированное имя равно root, а пароль -- Z10N0101, следует напечатать: «Доступ открыт для пользователя <имя>» и заблокировать сервер (т. е. вывести стандартный экран Windows «Блокировка» с запросом пароля для разблокирования). Если же данные неверны, необходимо вывести сообщение «Доступ закрыт!».
Сначала рассмотрим наиболее простой способ передачи параметров сценарию -- непосредственный набор их в URL после знака? -- например, в формате login=имя&password=napoль.
Пусть на сервере в корневом каталоге есть сценарий на РНР под названием hello.php. Этот сценарий распознает 2 параметра: login и password.
Поэтому, если задать в адресной строке браузера:
http://localhost/heIlo.php?login=root&password=Z10N0101
то должны получить требуемый результат.
Задача поставлена, можно приступать к ее решению. Но прежде полезно решить аналогичную, но более простую задачу.
Как же нам в сценарии получить строку параметров, переданную после знака вопроса в URL при обращении к сценарию? Для этого можно проанализировать переменную окружения QUERY_STRING, которая в РНР доступна под именем $_SERVER[QUERY_STRING].
Напишем пример, чтобы это проиллюстрировать (листинг qs.php).
Листинг qs.php. Вывод параметров командной строки.
<?php
echo «Данные из командной строки: $_SERVER[QUERY_STRING]»;
?>
Если теперь запустить этот сценарий из браузера (перед этим сохранив его в файле test.php в корневом каталоге сервера) таким образом:
http://localhost/qs.php?this+is+the+world/
то получим документ следующего содержания: Данные из командной строки: this+is+the+world
Обратите внимание на то, что URL-декодирование символов не произошло: строка $_server [' query_string '], как и одноименная переменная окружения, всегда приходит в той же самой форме, в какой она была послана браузером.
Так как РНР изначально создавался именно как язык для Web-программирования, то он дополнительно проводит некоторую работу с переменной query_string перед передачей управления сценарию. А именно, он разбивает ее по пробельным символам (в примере пробелов нет, их заменяют символы +, но эти символы РНР также понимает правильно) и помещает полученные кусочки в массив-список $argv, который впоследствии может быть проанализирован в программе.
Массив $argv используется при программировании на РНР крайне редко, что связано с большими возможностями интерпретатора по разбору данных, поступивших от пользователя. Однако в некоторых (учебных) ситуациях его применение оправдано.
2.1. Форма для передачи данных
Вернемся к поставленной задаче. Как сделать, чтобы пользователь мог в удобной форме ввести зарегистрированное имя и пароль? Очевидно, придется создать что-нибудь типа диалогового окна Windows, только в браузере. Для этого понадобится HTML-документ (например, form.html в корневом каталоге) с элементами этого диалога -- текстовыми полями -- и кнопкой.
Листинг form.html. Страница с формой
<html>
<body>
<form action=hello.php>
Имя: <input type=text name=”login” value=””<br>
Пароль: <input type=password name=”password” value=””<br>
<input type=”submit” name=”go” vа1ue = “Передать “ ><br>
<input type=”reset” vа1ue = “Очистить форму” ><br>
</form>
</body>
</html>
Загрузим документ в браузер. Теперь, если заполнить поля ввода и нажать кнопку, браузер обратится к сценарию hello.php и передаст через? все атрибуты, расположенные внутри тегов <input> в форме и разделенные символом & в строке параметров. Заметьте, что в атрибуте action тега <form> задан относительный путь, т. е. сценарий hello.php будет искаться браузером в том же самом каталоге, что и файл form.html.
Все перекодирования и преобразования, которые нужны для URL-кодирования данных, осуществляются браузером автоматически. В частности, буквы кириллицы превратятся в %хх, где хх -- некоторое шестнадцатеричное число, обозначающее код символа.
Использование форм позволяет не обременять пользователя такой информацией, как имя сценария, его параметры и т. д. Он всегда будет иметь дело только с полями, переключателями и кнопками формы:
Осталось определиться, как можно извлечь $login и $password из строки параметров.
Можно попытаться разобрать ее «вручную» при помощи стандартных функций работы со строками, которых в РНР множество. Однако прежде чем браться за какое-то дело, следует внимательно посмотреть и другие способы его выполнения.
2.2. Трансляция полей формы
Мы не хотим заниматься прямым разбором переменной окружения query_string, в которой хранятся параметры сценария. И правильно -- интерпретатор перед запуском сценария делает все сам. Причем независимо от того, каким методом -- get или post -- воспользовался браузер. То есть, РНР сам определяет, какой метод был задействован (информация об этом доступна через переменную окружения request_method), и получает данные либо из query_string, либо из стандартного входного потока.
Все данные из полей формы РНР помещает в глобальный массив $_REQUEST.
В нашем случае значение поля login после начала работы программы будет храниться в $_REQUEST [' login '], а значение поля password -- в $_REQUEST ['password'].
Кроме того, чтобы можно было как-то разделить GET-параметры от POST-данных, РНР также создает массивы $_GET и $_POST, заполняя их соответствующими значениями. Массив $_REQUEST представляет собой объединение этих двух массивов.
Листинг hello.php. Сценарий извлечения текста из полей формы
<?php
if ($_REQUEST['login']==”root” && $_REQUEST['password']==”Z10N0101”)
{
echo «Доступ открыт для пользователя $_REQUEST[login]»;
//Команда блокирования рабочей станции (работает в NT-системах)
system(“rundll32.exe user32.dll,LockWorkStation”);
}
Страницы: 1, 2
|