CGI: что это такое и как использовать в веб-разработке
CGI (Common Gateway Interface) является стандартом, который определяет, как веб-сервер соединяется и взаимодействует с внешними программами или скриптами на сервере, для динамической генерации содержимого веб-страницы.
Пример кода на языке Perl, где CGI используется для вывода содержимого формы:
perl
#!/usr/bin/perl
use CGI;
my $q = CGI->new;
print $q->header;
print $q->start_html('CGI Example');
print $q->h1('CGI Example');
print $q->start_form;
print $q->textfield(-name=>'fullname', -size=>30, -maxlength=>50);
print $q->submit(-value=>'Submit');
print $q->end_form;
print $q->end_html;
В этом примере мы используем модуль CGI для создания объекта $q, который предоставляет методы для работы с данными формы. Метод $q->header отправляет HTTP заголовок, а методы $q->start_html, $q->h1, $q->start_form и т.д. генерируют HTML для отображения на странице.
Когда пользователь заполняет форму и нажимает кнопку "Submit", сервер получает данные из формы и передает их в программу CGI на выполнение. CGI обрабатывает запрос, генерирует новую HTML-страницу и возвращает ее серверу, который в свою очередь отправляет ее пользователю в браузере.
Пример CGI-программы на языке Python, выводящей содержимое переменной:
python
#!/usr/bin/env python
import cgi
print("Content-type: text/html\n\n")
print("CGI Example ")
print("CGI Example
")
print("Enter a value:
")
print("")
form = cgi.FieldStorage()
if form.getvalue("input_var"):
input_var = form.getvalue("input_var")
print("You entered: " + input_var + "
")
print("")
Этот пример демонстрирует, как мы можем получать данные из формы, введенные пользователем, используя метод FieldStorage модуля cgi. Если пользователь ввел значение, оно выводится на страницу с помощью метода getvalue объекта FieldStorage.
В целом, CGI является устаревшей технологией, и сейчас обычно используется WSGI (Web Server Gateway Interface) для соединения внешних программ со веб-сервером. Он обычно используется в Python и является более эффективной и более масштабируемой альтернативой CGI.