Как программа PHP обрабатывает методы данных GET и POST
PHP обнаруживает оба метода GET и POST , исходящие из HTML формы. Одна
важная деталь, для понимания - это то что метод, POST всегда обрабатывается
раньше, если присутствуют оба из них. Если переменная PHP определяется
методом POST, или если переменная определена дэймоном HTTP в среде окружения
Unix, то метод GET не может перезаписать ее. Это должно предотвратить
ситуацию когда кто-либо добавит строку ?REMOTE_HOST=some.bogus.host к его
URL и таким образом, подчунуть механизму регистрации PHP, эти альтернативные
данные. Однако POST методу, разрешено перезаписывать эти переменные.
Любая компонента данных GET (данные после '?' в URL) которая имеет форму,
word=something, определит переменную $word, содержащую
значение something.
Даже если данные не определены в этой форме, к ним все равно можно
обратиться через массив $argv. Например, в URL подобно:
/cgi-bin/php.cgi/file.html?abc+def+EMAIL_ADDR=rasmus@vex.net&var==value
Соответствующие компоненты таблицы идентификаторов PHP будут:
$argc = 4
$argv[0] = abc
$argv[1] = def
$argv[2] = EMAIL_ADDR=rasmus@vex.net&var==value $EMAIL_ADDR = rasmus@vex.net
$var = value
Обратите внимание, как EMAIL_ADDR часть данных присутствует и в переменной
$argv [2], в которой она не анализируется, и создается переменная
$EMAIL_ADDR, содержащая значение rasmus@vex.net.
$EMAIL_ADDR переменная использовалась в вышеупомянутом примере, потому что
это - полезная переменная, если Вы используете особенности регистрации PHP.
Добавляя:
?EMAIL_ADDR=
К любым линкам на странице, где известен email адрес пользователя, Вы можете
передавать это значение следующей странице. Система регистрации PHP, будет
автоматически просматривать значение этой переменной и записывать его в
качестве адреса электронной почты пользователя в файлах регистрации. Для
любых пользователей PHP, вышеупомянутое выполняет ту же самую функцию что и
добавление ?<!--$email--> к используемому URL. Это выглядит немного
сложным сейчас, но сложным является и решение самому сформировать свою
собственную страницу.
В вышеприведенном примере Вы также видели, как несколько переменных в методе
GET могут быть правильно определены, отделением их друг от друга символом
"&". Этот список переменных, разделенный символом "&"
должен быть последней (или единственной) компонентой метода GET.
SELECT MULTIPLE и PHP
Тэг SELECT MULTIPLE в конструкции HTML позволяет пользователям сделать
множественный выбор из списка. Выбранные объекты впоследствии передаются
обработчику формы. Проблема состоит в том, что все они будут переданы с
одним и тем же именем объекта. То есть.
<SELECT NAME="var" MULTIPLE>
Каждая выбранная опция будет передана обработчику формы в виде:
var=option1
var=option2
var=option3
Каждая опция затрет предыдущее содержимое переменной $var. Решение состоит в
том, чтобы использовать особенность PHP/FI - не-индексированные массивы. Так
нужно использовать:
<SELECT NAME="var[]" MULTIPLE>
Это сообщает PHP/FI, чтобы он обработывал переменную varкак массив, каждое
присвоение значения переменной var[] добавляет элемент к массиву. Первый
элемент становится $var[0], следующий $var[1], и т.д. Для опеределения
количества выбранных элементов может использоваться функция
count(), и в
случае необходимости функция sort() для сортировки массива.
IMAGE SUBMIT и PHP
При передаче формы на рассмотрение, можно использовать картинку, вместо
стандартного представления кнопки. Это можно сделать, указав тэг:
<input type=image src=image.gif name=sub>
Когда пользователь нажимает где-нибудь на изображение, сопровождающая форма
будет передана серверу с двумя дополнительными переменными, sub_x и
sub_y.
Они содержат координаты точки внутри изображения, на которой пользователь
щелкнул мышью. Опытный может обратить внимание, что фактические имена
переменных , посланных броузером содержат точку вместо подчеркивания, но PHP
автоматически преобразовывает точку в подчеркивание.
[Назад]
[Содержание]
[Вперед]