Как программа 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 автоматически преобразовывает точку в подчеркивание.

Содержание