Лабораторная работа 3. CGI, поддержка сессий.

Информация

Стандарт CGI: https://www.ietf.org/rfc/rfc3875.txt
Стандарт HTTP 1.0: https://www.ietf.org/rfc/rfc1945.txt
Стандарт HTTP 1.1: https://datatracker.ietf.org/doc/html/rfc2616
Заголовки HTTP: https://ru.wikipedia.org/wiki/Список_заголовков_HTTP
Коды возврата HTTP: https://ru.wikipedia.org/wiki/Список_кодов_состояния_HTTP

Задание

Используя собственную виртуальную машину, веб-сервер Apache2 и компилируемый язык программирования, разработать CGI-программу "Калькулятор", которая при первом запросе возвращает форму с двумя полями ввода, операцией между ними и кнопками "Рассчитать", "Расчитать и запомнить", "Вспомнить".
Операция формируется выпадающим списком (+, -, *, /, ^).
При нажатии на кнопку "Рассчитать" запрос отправляется CGI-программе, которая выполняет рассчет и возвращает форму, аналогичную первоначальной, заполненную введенными значениями и результатом рассчета.
При нажатии на кнопку "Рассчитать и запомнить" результат визуально аналогичен предыдущему. Дополнительно, с помощью выбранного сессионного механизма, программа запоминает введенные данные и результат рассчета.
При нажатии на кнопку "Вспомнить" программа игнорирует введенные данные и возвращает ранее запомненные данные и результат рассчета.

Разработать 2 варианта программы с разными механизмами поддержки сессий:

  1. Хранение данных и обмен данными - с помощью Cookie
  2. Хранение данных и обмен данными - с помощью скрытых полей формы, используя метод POST
Решения не прeдусматривают применение сторонних библиотек поддержки веб-программирования. Тем не менее, самостоятельное изучение таких библиотек приветствуется, разрешается использование отдельных элементов их исходного кода. Например, для языка программирования С: ANSI C library for CGI Programming (https://github.com/boutell/cgic)