Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Язык C

Веб-программирование на С++

Что такое компьютерная графика?

Просмотр веб-страниц

Чтобы понять концепцию CGI, давайте посмотрим, что происходит, когда мы щелкаем гиперссылку для просмотра определенной веб-страницы или 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.

<тд>

Тип содержания:

Строка MIME, определяющая формат возвращаемого файла. Пример:Content-type:text/html.

<тд>

Срок действия:дата

Дата, когда информация становится недействительной. Это должно использоваться браузером, чтобы решить, когда страницу необходимо обновить. Допустимая строка даты должна быть в формате 01 января 1998 г., 12:00:00 по Гринвичу.

<тд>

Местоположение:URL

URL-адрес, который должен быть возвращен вместо запрошенного URL-адреса. Вы можете использовать это поле для перенаправления запроса к любому файлу.

<тд>

Последнее изменение:Дата

Дата последней модификации ресурса.

<тд>

Длина контента:N

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

<тд>

Set-Cookie:строка

Установите файл cookie, переданный через string .

Старший № Заголовок и описание
1
2
3
4
5
6

Переменные среды CGI

Все программы CGI будут иметь доступ к следующим переменным среды. Эти переменные играют важную роль при написании любой программы CGI.

<тд>

CONTENT_TYPE

Тип данных контента, используемый, когда клиент отправляет вложенный контент на сервер. Например, загрузка файла и т. д.

<тд>

CONTENT_LENGTH

Длина информации запроса, которая доступна только для запросов POST.

<тд>

HTTP_COOKIE

Возвращает установленные файлы cookie в виде пары "ключ-значение".

<тд>

HTTP_USER_AGENT

Поле заголовка запроса User-Agent содержит информацию о пользовательском агенте, инициирующем запрос. Это имя веб-браузера.

<тд>

PATH_INFO

Путь к сценарию CGI.

<тд>

QUERY_STRING

Информация в кодировке URL, отправляемая с запросом метода GET.

<тд>

REMOTE_ADDR

IP-адрес удаленного хоста, отправляющего запрос. Это может быть полезно для регистрации или аутентификации.

<тд>

REMOTE_HOST

Полное имя хоста, отправившего запрос. Если эта информация недоступна, можно использовать REMOTE_ADDR для получения IR-адреса.

<тд>

ЗАПРОС_МЕТОД

Метод, используемый для выполнения запроса. Наиболее распространенными методами являются GET и POST.

<тд>

SCRIPT_FILENAME

Полный путь к сценарию CGI.

<тд>

ИМЯ_СКРИПТА

Имя сценария CGI.

<тд>

ИМЯ_СЕРВЕРА

Имя хоста или IP-адрес сервера.

<тд>

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ_СЕРВЕРА

Название и версия программного обеспечения, на котором работает сервер.

Старший № Имя и описание переменной
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-теги

для передачи информации с помощью метода GET.

Простой пример URL:метод получения

Вот простой URL-адрес, который передаст два значения программе hello_get.py с помощью метода GET.

/cgi-bin/cpp_get.cgi?first_name=ZARA&last_name=ALI

Ниже приведена программа для создания файла cpp_get.cgi. CGI-программа для обработки ввода, вводимого веб-браузером. Мы собираемся использовать библиотеку C++ CGI, которая упрощает доступ к передаваемой информации —

69

Теперь скомпилируйте приведенную выше программу следующим образом —

71

Сгенерируйте cpp_get.cgi и поместите его в свой каталог CGI и попробуйте получить доступ, используя следующую ссылку —

/cgi-bin/cpp_get.cgi?first_name=ZARA&last_name=ALI

Это приведет к следующему результату —

88

Пример простой формы:метод GET

Вот простой пример, который передает два значения с помощью HTML FORM и кнопки отправки. Мы собираемся использовать тот же CGI-скрипт cpp_get.cgi для обработки этого ввода.

98

Вот фактический вывод вышеуказанной формы. Вы вводите имя и фамилию, а затем нажимаете кнопку отправки, чтобы увидеть результат.

Передача информации методом POST

Как правило, более надежным методом передачи информации программе CGI является метод POST. Это упаковывает информацию точно так же, как методы GET, но вместо того, чтобы отправлять ее в виде текстовой строки после ? в URL-адресе он отправляет его как отдельное сообщение. Это сообщение входит в сценарий CGI в виде стандартного ввода.

Та же программа cpp_get.cgi будет обрабатывать и метод POST. Давайте возьмем тот же пример, что и выше, который передает два значения с помощью HTML FORM и кнопки отправки, но на этот раз с методом POST следующим образом —

105 

Вот фактический вывод вышеуказанной формы. Вы вводите имя и фамилию, а затем нажимаете кнопку отправки, чтобы увидеть результат.

Передача данных флажка в программу CGI

Флажки используются, когда требуется выбрать более одного параметра.

Вот пример HTML-кода для формы с двумя флажками —

113

Результатом этого кода является следующая форма —

Ниже приведена программа C++, которая сгенерирует скрипт cpp_checkbox.cgi для обработки ввода, вводимого веб-браузером с помощью кнопки флажка.

128

Передача данных переключателя в программу CGI

Радиокнопки используются, когда требуется выбрать только один параметр.

Вот пример HTML-кода для формы с двумя переключателями —

132

Результатом этого кода является следующая форма —

Ниже приведена программа на C++, которая сгенерирует скрипт cpp_radiobutton.cgi для обработки ввода, вводимого веб-браузером с помощью переключателей.

145

Передача данных текстовой области в программу CGI

Элемент TEXTAREA используется, когда многострочный текст должен быть передан программе CGI.

Вот пример кода HTML для формы с полем TEXTAREA —

157

Результатом этого кода является следующая форма —

Ниже приведена программа на C++, которая генерирует скрипт cpp_textarea.cgi для обработки ввода, вводимого веб-браузером через текстовую область.

164

Передача данных раскрывающегося списка в программу CGI

Выпадающий список используется, когда доступно много вариантов, но будут выбраны только один или два.

Вот пример HTML-кода для формы с одним раскрывающимся списком —

177

Результатом этого кода является следующая форма —

Ниже приведена программа на C++, которая сгенерирует скрипт cpp_dropdown.cgi для обработки ввода, вводимого веб-браузером через раскрывающийся список.

184

Использование файлов cookie в CGI

Протокол HTTP является протоколом без сохранения состояния. Но для коммерческого веб-сайта требуется поддерживать информацию о сеансе между разными страницами. Например, регистрация одного пользователя заканчивается после заполнения многих страниц. Но как сохранить информацию о сеансе пользователя на всех веб-страницах.

Во многих случаях использование файлов cookie является наиболее эффективным методом запоминания и отслеживания предпочтений, покупок, комиссионных и другой информации, необходимой для повышения качества обслуживания посетителей или статистики сайта.

Как это работает

Ваш сервер отправляет некоторые данные в браузер посетителя в виде файла cookie. Браузер может принять куки. Если да, то он сохраняется в виде простой текстовой записи на жестком диске посетителя. Теперь, когда посетитель переходит на другую страницу вашего сайта, файл cookie доступен для извлечения. После извлечения ваш сервер знает/помнит, что было сохранено.

Файлы cookie — это запись данных в виде простого текста, состоящая из 5 полей переменной длины —

  • Истекает − Это показывает дату истечения срока действия файла cookie. Если это поле пусто, срок действия файла cookie истечет, когда посетитель закроет браузер.

  • Домен − Это показывает доменное имя вашего сайта.

  • Путь − Это показывает путь к каталогу или веб-странице, на которой установлен файл cookie. Это поле может быть пустым, если вы хотите получить файл cookie из любого каталога или страницы.

  • Безопасно − Если это поле содержит слово «безопасный», то файл cookie может быть получен только с защищенного сервера. Если это поле пустое, такого ограничения не существует.

  • Имя =Значение − Файлы cookie устанавливаются и извлекаются в виде пар «ключ-значение».

Настройка файлов cookie

Отправить куки в браузер очень просто. Эти файлы cookie будут отправлены вместе с заголовком HTTP до того, как будет подан Content-type. Предположим, вы хотите установить идентификатор пользователя и пароль в виде файлов cookie. Таким образом, настройка файлов cookie будет выполняться следующим образом

195

Из этого примера вы, должно быть, поняли, как устанавливать файлы cookie. Мы используем Set-Cookie Заголовок HTTP для установки файлов cookie.

Здесь необязательно устанавливать атрибуты файлов cookie, такие как срок действия, домен и путь. Примечательно, что файлы cookie устанавливаются перед отправкой магической строки "Content-type:text/html\r\n\r\n .

Скомпилируйте приведенную выше программу для создания setcookies.cgi и попробуйте установить файлы cookie, используя следующую ссылку. На вашем компьютере будут установлены четыре файла cookie —

/cgi-bin/setcookies.cgi

Получение файлов cookie

Легко получить все установленные файлы cookie. Файлы cookie хранятся в переменной среды CGI HTTP_COOKIE и имеют следующую форму.

200

Вот пример того, как получить файлы cookie.

218

Теперь скомпилируйте приведенную выше программу для создания getcookies.cgi и попробуйте получить список всех файлов cookie, доступных на вашем компьютере —

/cgi-bin/getcookies.cgi

Это создаст список всех четырех файлов cookie, установленных в предыдущем разделе, и всех других файлов cookie, установленных на вашем компьютере —

227

Пример загрузки файла

Чтобы загрузить файл, HTML-форма должна иметь атрибут enctype со значением multipart/form-data. . Тег ввода с типом файла создаст кнопку «Обзор».

236

Результатом этого кода является следующая форма —

Примечание − Приведенный выше пример был намеренно отключен, чтобы люди не загружали файлы на наш сервер. Но вы можете попробовать приведенный выше код на своем сервере.

Вот скрипт cpp_uploadfile.cpp для обработки загрузки файлов —

240

Вышеприведенный пример предназначен для написания контента на cout. поток, но вы можете открыть поток файлов и сохранить содержимое загруженного файла в файле в нужном месте.

Надеюсь, вам понравился этот урок. Если да, пришлите нам свой отзыв.


Язык C

  1. Пространства имен в программировании на C#
  2. Операторы С++
  3. С++ Комментарии
  4. Передача массива в функцию в программировании на C++
  5. C Учебник
  6. Обзор С++
  7. Константы/литералы С++
  8. Операторы в С++
  9. Числа в С++
  10. Ссылки на С++