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



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





Ведущий раздела: 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» 

Имя:

Пароль:



Регистрация

Как вы относитесь к интернет-магазинам?
Не доверяю
18% (16)
Ни разу не пользовался и не буду
16% (15)
Пользовался единожды
12% (11)
Пользуюсь регулярно
26% (24)
Пользовался бы, но нет денег
18% (16)
А что такие бывают?
2% (2)
Обычные магазины лучше!
8% (7)

Проголосовало: 91
Приходит программист в библиотеку и спрашивает библиотекаря:
- Книги по программированию где?
Ему объясняют, что заканчивать предложение на вопросительном слове стилистически неправильно.
Программист:
- Понял! Книги по программированию где, дурья твоя башка?
Рейтинг: 3/10 (3)
Посмотреть все анекдоты