Лабораторная работа 4. 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 и компилируемый язык программирования, разработать систему тестирования на основе предлагаемого набора тестовых заданий. Информация о процессе и результатах тестирования, а также любая другая сессионная информация, хранится в файле, имя которого передается в Cookie. Хранение ограничено 10 минутами.

Процесс тестирования:

  1. При первом входе пользователю предлагается ввести свое имя и начать тестирование.
  2. Каждая страница системы содержит кнопку с предложением начать сначала.
  3. На тестирование отводится 5 минут, обратный секундомер до конца тестирования - на каждой странице при прохождении тестирования.
  4. Порядок визуализации тестовых заданий рандомный, определяется один раз в начале тестирования.
  5. Порядок визуализации вариантов ответа рандомный, определяется при визуализации каждого тестового задания.
  6. Ответы с однозначным выбором имеют вес 1 балл, ответы с множественным выбором имеют вес 2 балла.
  7. Страница результатов тестирования содержит: обратный секундомер до конца сессии; всего баллов; набранных баллов; процент правильных ответов; количество тестовых зданий, на которые не было дано ответов; список тестовых заданий с неправильными ответами.
Решение не прeдусматривает применение сторонних библиотек поддержки веб-программирования. Тем не менее, самостоятельное изучение таких библиотек приветствуется, разрешается использование отдельных элементов их исходного кода. Например, для языка программирования С: ANSI C library for CGI Programming (https://github.com/boutell/cgic)