Forum Webscript.Ru

Программирование => PHP => Тема начата: Evgeny от 24 Июня 2002, 14:14:17

Название: CGI переменные
Отправлено: Evgeny от 24 Июня 2002, 14:14:17
Привет всем.
Начал писать свой первый php-скрипт, и возник такой вопрос. Как получить значения CGI-переменных, переданных в скрипт.
Большое спасибо.
Название: CGI переменные
Отправлено: Меняздесьдавнонет от 24 Июня 2002, 14:41:03
Эти переменные называются не CGI. CGI вообще к РНР имеет очень маленькое отношение.

Эти переменные находятся в массивах, которые называются
$HTTP_метод передачи данных_VARS
метод бывает POST или GET
то есть, если ты в форме указывал

то в script.php массив $HTTP_POST_VARS будет соджержать все поля формы. ключ массива - имя поля, значение - значение.
если было поле
и в него введено число 20, то обратиться ты можешь так
echo $HTTP_POST_VARS[\'age\'];
это напечатает 20.
Название: CGI переменные
Отправлено: Evgeny от 24 Июня 2002, 15:16:03
Понятно, спасибо.
А как перебрать все ключи и значения массива $HTTP_POST_VARS?
Название: CGI переменные
Отправлено: Меняздесьдавнонет от 24 Июня 2002, 15:42:14
http://www.php.net/each
http://www.php.net/extract
Название: CGI переменные
Отправлено: Evgeny от 24 Июня 2002, 16:02:06
В описании формы, если указать enctype="text/plain", (метод - POST), то массив $HTTP_POST_VARS пуст. Почему?
Название: CGI переменные
Отправлено: Меняздесьдавнонет от 24 Июня 2002, 16:36:18
не знаю.
а если enctype не указывать?
Название: CGI переменные
Отправлено: Evgeny от 24 Июня 2002, 17:16:04
Цитировать
не знаю.
а если enctype не указывать?

Если не указывать, то всё в порядке, работает.
Работает также, если enctype указать и метод GET использовать.
И ещё вопрос. Как узнать, существует ли элемент массива с данным ключом.
В Перле это было бы например:

if (exists $arr{\'key1\'})
{  ...
}

И как можно узнать, является ли пустым значение массива, ассоциированное с данным ключём.
Опять же пример из перла (в нём я немного сильнее :))

if ($arr{\'key1\'})
{  ...
}
Название: CGI переменные
Отправлено: Меняздесьдавнонет от 24 Июня 2002, 17:56:23
http://www.php.net/isset
http://www.php.net/empty

индекс массива берется в квадраиеых скобках
if (isset($arr[\'key\']))

а с enctype я так думаю, такое дело.
такого типа - текст/плайн - не существует, и поэтому вместо $HTTP_POST_VARS берется что-то вроде $RAW_HTTP_HEADERS - точно название не помню.
Ну, а гету енктайп вообще по барабану.
Название: CGI переменные
Отправлено: Evgeny от 24 Июня 2002, 19:43:19
Да, обойдусь без энктайпа,
спасибо за помощь.