» Главная
eXcode.ru » Статьи » Web
» Новости
» Опросы
» Файлы
» Журнал



Пользователей: 0
Гостей: 8





Ведущий раздела: LedWorm
Описание: Статьи по WEB-технологиям


Подразделы:

XML (5)XSLT (4)Apache (7)
Flash MX для проф. (13)Введение в CGI (6)Введение в HTML (7)
Применение CSS (5)Основы сетей передачи данных (14)Основы локальных сетей (19)

«1» «2» «3» «4» «5» 

Тэг <input> — различные поля ввода
Существует много разновидностей этого тэга, отличающихся параметром type. Перечислю наиболее употребительные из них. В квадратных скобках я буду указывать необязательные параметры, а также параметры, отсутствие которых иногда имеет смысл (будем считать, что параметр nameявляется обязательным, хотя это и не так в силу вышеизложенных рассуждений). Ни в коем случае не набирайте эти квадратные скобки!


Формы
До сих пор из всех полей формы мы рассматривали только текстовые поля и кнопки отправки (типа submit). Давайте теперь поглядим, в каком виде приходят данные и от других элементов формы (а их существует довольно много).


Расшифровка URL-кодированных данных
Если бы в предыдущем примере мы ввели параметры, содержащие, например, буквы кириллицы, то сценарию они бы поступили не в "нормальном" виде, а в URL-закодированном. Пожалуй, ни один сценарий не обходится без функции расшифровки URL-кодированных данных. И это совсем не удивительно. Радует только то, что такую функцию нужно написать один раз, а дальше можно пользоваться ей по мере необходимости.


Передача параметров методом POST
В отличие от метода GET, здесь параметры передаются сценарию не через переменные окружения, а через стандартный поток ввода (в Си он называется stdin). То есть программа должна работать так, будто никакого сервера не существует, а она читает данные, которые вводит пользователь с клавиатуры. (Конечно, на самом деле никакой клавиатуры нет и быть не может, а заправляет всем сервер, который "изображает из себя" клавиатуру.)


Передача параметров методом GET
Тут все просто. Все параметры передаются единой строкой (а именно, точно такой же, какая была задана в URL после .) в переменной QUERY_STRING. Единственная проблема — то, что все данные поступят URL-кодированными. Так что нам понадобится функция декодирования. Но это отдельная тема, пока мы не будем ее касаться.


Передача информации CGI-сценарию

Проблема приема параметров, заданных пользователем (с точки зрения сценария — все равно, через форму или вручную), несколько сложнее. Мы уже частично затрагивали ее и знаем, что основная информация приходит через заголовки, а также (при использовании метода POST) после всех заголовков. Рассмотрим эти вопросы подробнее.


Пример CGI-сценария
Настало время привести небольшой сценарий на Си, который иллюстрирует некоторые возможности, которые были описаны выше (листинг 3.1)


Передача документа пользователю
Вначале рассмотрим более простой вопрос: как программа посылает свой ответ (то есть документ) пользователю.


CGI изнутри
До сих пор мы рассматривали лишь теоретические аспекты CGI. Мы знаем в общих чертах, как и что передается пользователю сервером и наоборот. Однако как же все-таки должна быть устроена CGI-программа (CGI-сценарий), чтобы работать с этой информацией. Откуда она ее вообще получает и куда должна выводить, чтобы переслать текст пользователю.


Метод POST и формы
Что же теперь нужно сделать, чтобы послать данные не методом GET, а методом POST. Нетрудно догадаться: достаточно вместо method=GETуказать method=POST. Больше ничего менять не надо.


«1» «2» «3» «4» «5» 

Имя:

Пароль:



Регистрация

Какой марки ваш мобильник?
Nokia
40% (146)
Samsung
8% (29)
Siemens
16% (59)
Motorola
13% (49)
Sony Ericsson
13% (49)
LG
1% (4)
Pantech
0% (0)
Alcatel
2% (6)
Другой
3% (10)
Нет у меня мобилы
4% (15)

Проголосовало: 367
Сидят два пьяных интернетчика вечером на скамейке, после посещения интернет-кафе. Первый второму:
- Привет, как дела двоеточие, две закрывающих скобки.
Второй долго ищет перед собой клаву, потом, подумав говорит:
- Нормально, а у тя?
Смотрит, а первый уже лежит в дауне под скамейкой.. :( Второй, еще подумав, добавляет:
- Сенд тсру сервер!
Рейтинг: 2.5/10 (2)
Посмотреть все анекдоты