Веб-программирование на С++
Что такое компьютерная графика?
-
Общий интерфейс шлюза, или CGI, представляет собой набор стандартов, определяющих, как происходит обмен информацией между веб-сервером и пользовательским скриптом.
-
Спецификации CGI в настоящее время поддерживаются NCSA, и NCSA определяет CGI следующим образом —
-
Общий интерфейс шлюза, или CGI, является стандартом для внешних программ шлюза для взаимодействия с информационными серверами, такими как HTTP-серверы.
-
Текущая версия — CGI/1.1, CGI/1.2 находится в стадии разработки.
Просмотр веб-страниц
Чтобы понять концепцию CGI, давайте посмотрим, что происходит, когда мы щелкаем гиперссылку для просмотра определенной веб-страницы или URL-адреса.
-
Ваш браузер связывается с веб-сервером HTTP и запрашивает URL-адрес, т.е. имя файла.
-
Веб-сервер проанализирует URL-адрес и будет искать имя файла. Если он находит запрошенный файл, веб-сервер отправляет этот файл обратно в браузер, в противном случае отправляет сообщение об ошибке, указывающее, что вы запросили неправильный файл.
-
Веб-браузер принимает ответ от веб-сервера и отображает либо полученный файл, либо сообщение об ошибке на основе полученного ответа.
Однако можно настроить HTTP-сервер таким образом, чтобы всякий раз, когда запрашивается файл в определенном каталоге, этот файл не отправлялся обратно; вместо этого он выполняется как программа, и полученные результаты программы отправляются обратно в ваш браузер для отображения.
Общий интерфейс шлюза (CGI) — это стандартный протокол, позволяющий приложениям (называемым программами CGI или сценариями CGI) взаимодействовать с веб-серверами и клиентами. Эти программы CGI могут быть написаны на Python, PERL, Shell, C или C++ и т. д.
Схема архитектуры CGI
Следующая простая программа показывает простую архитектуру CGI —
Конфигурация веб-сервера
Прежде чем приступить к программированию CGI, убедитесь, что ваш веб-сервер поддерживает CGI и настроен для работы с CGI-программами. Все CGI-программы, которые должны выполняться HTTP-сервером, хранятся в предварительно сконфигурированном каталоге. Этот каталог называется каталогом CGI и по соглашению называется /var/www/cgi-bin. По соглашению файлы CGI будут иметь расширение .cgi. , хотя они являются исполняемым файлом C++.
По умолчанию веб-сервер Apache настроен на запуск программ CGI в каталоге /var/www/cgi-bin. Если вы хотите указать любой другой каталог для запуска ваших сценариев CGI, вы можете изменить следующий раздел в файле httpd.conf —
09
Здесь я предполагаю, что у вас успешно запущен и работает веб-сервер, и вы можете запустить любую другую программу CGI, такую как Perl или Shell и т. д.
Первая компьютерная программа
Рассмотрим следующее содержимое программы на C++ —
18
Скомпилируйте приведенный выше код и назовите исполняемый файл cplusplus.cgi. Этот файл хранится в каталоге /var/www/cgi-bin и имеет следующее содержимое. Перед запуском программы CGI убедитесь, что у вас есть режим изменения файла с помощью chmod 755 cplusplus.cgi. Команда UNIX, чтобы сделать файл исполняемым.
Моя первая программа CGI
Вышеупомянутая программа C++ представляет собой простую программу, которая записывает свой вывод в файл STDOUT, то есть на экран. Доступна одна важная и дополнительная функция:печать первой строки Content-type:text/html\r\n\r\n. . Эта строка отправляется обратно в браузер и указывает тип контента, который будет отображаться на экране браузера. Теперь вы, должно быть, поняли основную концепцию CGI и можете писать множество сложных программ CGI, используя Python. Программа C++ CGI может взаимодействовать с любой другой внешней системой, такой как СУБД, для обмена информацией.
Заголовок HTTP
Строка Content-type:text/html\r\n\r\n является частью заголовка HTTP, который отправляется браузеру для понимания содержимого. Весь заголовок HTTP будет иметь следующий вид —
26
Есть несколько других важных HTTP-заголовков, которые вы будете часто использовать при программировании CGI.
Старший № | Заголовок и описание |
---|---|
1 | <тд>|
2 | <тд>|
3 | <тд>|
4 | <тд>|
5 | <тд>|
6 | <тд>
Переменные среды CGI
Все программы CGI будут иметь доступ к следующим переменным среды. Эти переменные играют важную роль при написании любой программы CGI.
Старший № | Имя и описание переменной |
---|---|
1 | <тд>|
2 | <тд>|
3 | <тд>|
4 | <тд>|
5 | <тд>|
6 | <тд>|
7 | <тд>|
8 | <тд>|
9 | <тд>|
10 | <тд>|
11 | <тд>|
12 | <тд>|
13 | <тд>
Вот небольшая программа CGI для вывода списка всех переменных CGI.
30
CGI-библиотека C++
Для реальных примеров вам потребуется выполнить множество операций с помощью вашей CGI-программы. Существует библиотека CGI, написанная для программы C++, которую вы можете загрузить с ftp://ftp.gnu.org/gnu/cgicc/ и выполнить шаги по установке библиотеки —
48
Вы можете ознакомиться с соответствующей документацией, доступной в разделе «Документация C++ CGI Lib».
Методы GET и POST
Вы, должно быть, сталкивались со многими ситуациями, когда вам нужно передать некоторую информацию из вашего браузера на веб-сервер и, в конечном итоге, в вашу CGI-программу. Чаще всего браузер использует два метода для передачи этой информации на веб-сервер. Это методы GET и POST.
Передача информации с использованием метода GET
Метод GET отправляет закодированную информацию о пользователе, добавленную к запросу страницы. Страница и закодированная информация разделены знаком ? символ следующим образом —
57
Метод GET — это метод по умолчанию для передачи информации из браузера на веб-сервер, и он создает длинную строку, которая появляется в поле Location:вашего браузера. Никогда не используйте метод GET, если у вас есть пароль или другая конфиденциальная информация для передачи на сервер. Метод GET имеет ограничение по размеру, и вы можете передать до 1024 символов в строке запроса.
При использовании метода GET информация передается с помощью http-заголовка QUERY_STRING и будет доступна в вашей CGI-программе через переменную среды QUERY_STRING.
Вы можете передавать информацию, просто объединяя пары ключей и значений вместе с любым URL-адресом, или вы можете использовать HTML-теги
Язык C