Получение данных, переданных пользователем через веб-форму

Данные, переданные пользователем при помощи веб-формы с использованием метода GET, сохраняются в переменной окружения QUERY_STRING. Получить их можно весьма просто:
$query = $ENV{'QUERY_STRING'}; # Переменная $query будет содержать
# переданные пользователем данные
# при помощи метода GET
Чуть сложнее обстоит дело с методом POST. В этом случае пользовательские данные, передаваемые CGI-приложению в теле сообщения HTTP-запроса, доступны через стандартный ввод скрипта, а размер этих данных в байтах сохраняется в переменной окружения CONTENT_LENGTH.
Для чтения переданных таким способом данных обычно используется функция блокового чтения из потока sysread():
sysread(STDIN, $query, $ENV{'CONTENT_LENGTH'}); # Переменная $query
# будет содержать
# переданные
# пользователем данные
# при помощи метода POST
Эту простейшую конструкцию, к сожалению, можно использовать далеко не всегда — она годится лишь в случае, когда передаваемые данные имеют небольшой размер. Функция блокового чтения данных sysread() не может прочесть блок данных неограниченной длины, в связи с чем необходимо использовать вспомогательную переменную-буфер.
Более универсальная конструкция для чтения тела запроса, переданного методом POST, приводится ниже:
while (sysread(STDIN, $buf, 1024)) # Переменная $buf используется
{ # в качестве буфера. Читаем из
$query .= $buf; # стандартного ввода блоками размером
} # по килобайту


© 2008-2018 ОптимизацияВебСайтов.ру


Любое использование текстового и графического контента сайта без активной ссылки на источник не доскается.