Изучаем asp.net: создаем сайт с нуля для новичков

Руководство по созданию веб-приложения c# asp.net core - visual studio (windows) | microsoft learn

Passing Text Area Data to CGI Program

TEXTAREA element is used when multiline text has to be passed to the CGI Program.

Here is example HTML code for a form with a TEXTAREA box −

<form action = "/cgi-bin/cpp_textarea.cgi" method = "post" target = "_blank">
   <textarea name = "textcontent" cols = "40" rows = "4">
      Type your text here...
   </textarea>
   <input type = "submit" value = "Submit" />
</form>

The result of this code is the following form −

Below is C++ program, which will generate cpp_textarea.cgi script to handle input given by web browser through text area.

#include <iostream>
#include <vector>  
#include <string>  
#include <stdio.h>  
#include <stdlib.h> 

#include <cgicc/CgiDefs.h> 
#include <cgicc/Cgicc.h> 
#include <cgicc/HTTPHTMLHeader.h> 
#include <cgicc/HTMLClasses.h> 

using namespace std;
using namespace cgicc;

int main () {
   Cgicc formData;
  
   cout << "Content-type:text/html\r\n\r\n";
   cout << "<html>\n";
   cout << "<head>\n";
   cout << "<title>Text Area Data to CGI</title>\n";
   cout << "</head>\n";
   cout << "<body>\n";

   form_iterator fi = formData.getElement("textcontent");  
   if( !fi->isEmpty() && fi != (*formData).end()) {  
      cout << "Text Content: " << **fi << endl;  
   } else {
      cout << "No text entered" << endl;  
   }
  
   cout << "<br/>\n";
   cout << "</body>\n";
   cout << "</html>\n";
   
   return 0;
}

First CGI Program

Consider the following C++ Program content −

#include <iostream>
using namespace std;

int main () {
   cout << "Content-type:text/html\r\n\r\n";
   cout << "<html>\n";
   cout << "<head>\n";
   cout << "<title>Hello World - First CGI Program</title>\n";
   cout << "</head>\n";
   cout << "<body>\n";
   cout << "<h2>Hello World! This is my first CGI program</h2>\n";
   cout << "</body>\n";
   cout << "</html>\n";
   
   return 0;
}

Compile above code and name the executable as cplusplus.cgi. This file is being kept in /var/www/cgi-bin directory and it has following content. Before running your CGI program make sure you have change mode of file using chmod 755 cplusplus.cgi UNIX command to make file executable.

Web Browsing

To understand the concept of CGI, let’s see what happens when we click a hyperlink to browse a particular web page or URL.

  • Your browser contacts the HTTP web server and demand for the URL ie. filename.

  • Web Server will parse the URL and will look for the filename. If it finds requested file then web server sends that file back to the browser otherwise sends an error message indicating that you have requested a wrong file.

  • Web browser takes response from web server and displays either the received file or error message based on the received response.

However, it is possible to set up the HTTP server in such a way that whenever a file in a certain directory is requested, that file is not sent back; instead it is executed as a program, and produced output from the program is sent back to your browser to display.

The Common Gateway Interface (CGI) is a standard protocol for enabling applications (called CGI programs or CGI scripts) to interact with Web servers and with clients. These CGI programs can be a written in Python, PERL, Shell, C or C++ etc.

Passing Information Using GET Method

The GET method sends the encoded user information appended to the page request. The page and the encoded information are separated by the ? character as follows −

http://www.test.com/cgi-bin/cpp.cgi?key1=value1&key2=value2

The GET method is the default method to pass information from browser to web server and it produces a long string that appears in your browser’s Location:box. Never use the GET method if you have password or other sensitive information to pass to the server. The GET method has size limitation and you can pass upto 1024 characters in a request string.

When using GET method, information is passed using QUERY_STRING http header and will be accessible in your CGI Program through QUERY_STRING environment variable.

You can pass information by simply concatenating key and value pairs alongwith any URL or you can use HTML <FORM> tags to pass information using GET method.

Конфигурация веб-сервера

Прежде чем приступить к программированию CGI, убедитесь, что ваш веб-сервер поддерживает CGI и настроен для обработки программ CGI. Все программы CGI, выполняемые HTTP-сервером, хранятся в предварительно настроенном каталоге. Этот каталог называется каталогом CGI и по соглашению называется / var / www / cgi-bin. По соглашению файлы CGI будут иметь расширение как.cgi, хотя они являются исполняемыми файлами C ++.

По умолчанию веб-сервер Apache настроен на запуск программ CGI в / var / www / cgi-bin. Если вы хотите указать любой другой каталог для запуска ваших сценариев CGI, вы можете изменить следующий раздел в файле httpd.conf —

Здесь я предполагаю, что у вас есть веб-сервер, который успешно работает, и вы можете запускать любую другую программу CGI, такую ​​как Perl, Shell и т. Д.

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

Чтобы понять концепцию CGI, давайте посмотрим, что происходит, когда мы щелкаем гиперссылку для просмотра определенной веб-страницы или URL-адреса.

  • Ваш браузер связывается с веб-сервером HTTP и запрашивает URL, т.е. имя файла.

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

  • Веб-браузер принимает ответ от веб-сервера и отображает полученный файл или сообщение об ошибке на основе полученного ответа.

Однако можно настроить HTTP-сервер таким образом, чтобы всякий раз, когда запрашивается файл в определенном каталоге, этот файл не отправляется обратно; вместо этого он выполняется как программа, и вывод, произведенный программой, отправляется обратно в ваш браузер для отображения.

Общий интерфейс шлюза (CGI) — это стандартный протокол, позволяющий приложениям (называемым программами CGI или сценариями CGI) взаимодействовать с веб-серверами и клиентами. Эти программы CGI могут быть написаны на Python, PERL, Shell, C или C ++ и т. Д.

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

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

Старший Нет Имя и описание переменной
1

CONTENT_TYPE

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

2

CONTENT_LENGTH

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

3

HTTP_COOKIE

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

4

HTTP_USER_AGENT

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

5

PATH_INFO

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

6

QUERY_STRING

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

7

REMOTE_ADDR

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

8

REMOTE_HOST

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

9

REQUEST_METHOD

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

10

SCRIPT_FILENAME

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

11

SCRIPT_NAME

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

12

SERVER_NAME

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

13

SERVER_SOFTWARE

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

Вот небольшая программа CGI для вывода всех переменных CGI.

Заголовок HTTP

Линия Content-type:text/html\r\n\r\nявляется частью HTTP-заголовка, который отправляется браузеру для понимания содержимого. Весь HTTP-заголовок будет в следующей форме —

Есть несколько других важных заголовков HTTP, которые вы часто будете использовать в программировании CGI.

Старший Нет Заголовок и описание
1

Content-type:

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

2

Expires: Date

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

3

Location: URL

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

4

Last-modified: Date

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

5

Content-length: N

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

6

Set-Cookie: String

Установите cookie, передаваемый через строку .

Setting up Cookies

It is very easy to send cookies to browser. These cookies will be sent along with HTTP Header before the Content-type filed. Assuming you want to set UserID and Password as cookies. So cookies setting will be done as follows

#include <iostream>
using namespace std;

int main () {
   cout << "Set-Cookie:UserID = XYZ;\r\n";
   cout << "Set-Cookie:Password = XYZ123;\r\n";
   cout << "Set-Cookie:Domain = www.tutorialspoint.com;\r\n";
   cout << "Set-Cookie:Path = /perl;\n";
   cout << "Content-type:text/html\r\n\r\n";

   cout << "<html>\n";
   cout << "<head>\n";
   cout << "<title>Cookies in CGI</title>\n";
   cout << "</head>\n";
   cout << "<body>\n";

   cout << "Setting cookies" << endl;  
  
   cout << "<br/>\n";
   cout << "</body>\n";
   cout << "</html>\n";
   
   return 0;
}

From this example, you must have understood how to set cookies. We use Set-Cookie HTTP header to set cookies.

Here, it is optional to set cookies attributes like Expires, Domain, and Path. It is notable that cookies are set before sending magic line «Content-type:text/html\r\n\r\n.

Compile above program to produce setcookies.cgi, and try to set cookies using following link. It will set four cookies at your computer −

2.3 Добавление стилей в документ

позволяет использовать различные стили шрифтов для выделения текстовой
информации в ваших документах. Вот короткий список стилей, поддерживаемых
большинством браузеров:(жирный)(наклонный)spaced (type writer — с
использованием фиксированных шрифтов)

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

Таблица №1: Основные стили текста

Стиль

Элемент или тэг

Результат

Bold

<B> Этот текст жирный </B>

Этот текст жирный

Italic

<I> Этот текст наклонный </I>

Mono spaced

<TT> Этот текст с непроп. шрифтом </TT>

Этот текст с непроп. шрифтом

Комбинирование стилей позволяет вам отображать в одной строке несколько
элементов различными стилями, например:

<b>Жизнь</b> — <i>это
<b>песня!</b></i>

Жизнь — это песня!

Внимание!Добавление большого количества стилей и их комбинаций
приводит к затруднению чтения текста!

Дополнительные стили:

· big (большой)

· small (маленький)

· sub (подстрочник)

· sup (надстрочник)

Таблица №2: Дополнительные стили текста

Стиль

Элемент или тэг

Результат

Big

Этот текст <BIG> большой </BIG>

Этот текст большой

Small

Этот текст <SMALL> маленький </SMALL>

Этот текст маленький

Sub

Этот текст <SUB> подстрочник </SUB>

Этот текст подстрочник

Sup

Этот текст <SUP> надстрочник </SUP>

Этот текст надстрочник

Размер шрифта <FONT SIZE>. Вы можете изменять размер шрифта при
помощи тэга: <FONT SIZE=+|- n>

Шрифт может иметь размер от 1 до 7. Вы можете прямо указать размер шрифта
цифрой, или указать смещение относительно базового значения (по умолчанию — 3)
в положительную или отрицательную сторону. Базовое значение можно изменить при
помощи тэга: <BASEFONT SIZE=n>

Например:
<p>и <font SIZE=+1>з</font><font SIZE=+2>м</font> <font SIZE=+3>е</font><font SIZE=+4>н</font> <font SIZE=+3>е</font><font SIZE=+2>н</font> <font SIZE=+1>и</font> е</p>

Изменение цвета шрифта <FONT SIZE>. Вы можете изменить цвет шрифта
при помощи тэга: <FONT COLOR=»#XXXXXX>

Цвет указывается в RGB-формате (Red-Green-Blue) посредством указания
размерности каждой компоненты цвета в шестнадцатеричном формате. Например,
белый цвет обозначается «000000», черный — «FFFFFF», синий
— «0000FF» и т.п.

<FONT COLOR=»#FF0000″> Красный </FONT> <FONT
COLOR=»#00FF00″> Зеленый
</FONT> <FONT COLOR=»#0000FF»> Синий.

Понравилась статья? Поделиться с друзьями: