Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Компьютерные сети / Комп сети 6_awk.ppt
Скачиваний:
23
Добавлен:
22.02.2016
Размер:
168.96 Кб
Скачать

Для метода GET наиболее важна переменная QUERY_STRING, содержащая в

формате Имя_1=Значение_1&Имя_2=Значение_2&…. содержимое заполненной формы, которое

добавляется к URL.

Для метода POST важны переменные: - CONTENT_LENGTH - содержит число байтов в стандартном вводе;

- CONTENT_TYPE - содержит тип передаваемых данных от скрипта.

51

Для распознавания метода передачи

данных от формы применяется переменная окружения REQUEST_METHOD, которая

содержит значение “GET” для метода GET и значение “POST” для метода POST.

При методе POST данные идут через

стандартный ввод в формате, что и для метода GET.

В этом случае применяется команда read Var. При таком вызове в переменную

Var попадает все, что идет до первого

 

пробела в потоке стандартного ввода

 

(STDIN).

52

Но в силу того, что браузер передает информацию из формы в закодированном виде, где все пробелы заменяются символами “+”, то вся информация от формы будет проходить без всяких пробелов.

Если применена команда read Var1, Var2, Var3, ….

то первое слово попадет в переменную

Var1, второе – в Var2. Последней

переменной достанется все, что останется в стандартном вводе (такой ввод для CGI не применяется). 53

Пример:

В начале примера мы программируем на языке shell.

echo “Content-type: text/html” echo “”

echo “<html><head><title>” echo “CGI test on shell UNIX” echo “</title></head><body>”

echo “<h1> CGI test on UNIX shell and awk</h1>”

54

# Занесение в переменную Var1 данных от формы

if test $REQUEST_METHOD = ”GET” then Var1=$QUERY_STRING

elif test $REQUEST_METHOD = ”POST” then

read Var1

fi

echo “Var1 = “ $Var1 “<br>”

#Образуем конвейер из shell и awk: echo $Var1| awk ‘BEGIN {FS=”&”}

# Задание разделителя данных формы

55

 

for (i=1; i<= NF; i++) {Arr[$i]=$i; N++}

#Получение в массиве Arr пар Имя=значение for (Name in Arr) {

print “Name = “ Name “Value = “ Arr[Name] “<br>”}

}’

Получение массива Arr можно выполнить и так:

echo $Var1| awk ‘{ split ($0,Arr,”&”); for (n in Arr) {print Arr[n]”<br>”}

}’

56

Соседние файлы в папке Компьютерные сети