Главная страница
Навигация по странице:

  • ОТЧЕТПО ЛАБОРАТОРНОЙ РАБОТЕ №5ПО ДИСЦИПЛИНЕ «WEB-ПРОГРАММИРОВАНИЕ»

  • Лабораторная работа №5 Общешлюзовой интерфейс CGI-скрипт. Cookies Цель работы

  • Порядок выполнения лабораторной работы

  • Разметка html-документа с исходным кодом скрипта

  • Лабораторная работа №5 по WEB-программированию Общешлюзовой интерфейс CGI-скрипт. Cookies. АВТ-709 Кузнецов, Шабанов (лр5). Отчет по лабораторной работе 5 по дисциплине webпрограммирование


    Скачать 0.51 Mb.
    НазваниеОтчет по лабораторной работе 5 по дисциплине webпрограммирование
    АнкорЛабораторная работа №5 по WEB-программированию Общешлюзовой интерфейс CGI-скрипт. Cookies
    Дата04.03.2023
    Размер0.51 Mb.
    Формат файлаdocx
    Имя файлаАВТ-709 Кузнецов, Шабанов (лр5).docx
    ТипОтчет
    #968418


    МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ

    «НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»

    Кафедра вычислительной техники

    ОТЧЕТ
    ПО ЛАБОРАТОРНОЙ РАБОТЕ №5
    ПО ДИСЦИПЛИНЕ «WEB-ПРОГРАММИРОВАНИЕ»


    Факультет: АВТ Преподаватель: Новицкая Ю.В.

    Группа: АВТ-709

    Студент(ы):

    Кузнецов А.В.

    Шабанов М.Г.
    Новосибирск, 2020 г.

    Лабораторная работа №5

    Общешлюзовой интерфейс CGI-скрипт. Cookies

    Цель работы:

    Получить практические навыки в написании и отладке CGI-скрипта на

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

    Получить представление о данных cookies.

    Задание:

    Во всех вариантах заданий необходимо разработать CGI-скрипт,

    реализующий некоторый тест, и два счетчика выполнения теста — общий

    счетчик, значение которого хранится на серверной стороне, и счетчик

    конкретного посетителя, значение которого хранится на клиентской стороне в

    виде cookie.

    Тест должен содержать не менее трех вопросов с не менее чем тремя

    вариантами ответа на каждый вопрос.

    Данные, введенные пользователем, пересылаются на серверную сторону,

    обрабатываются CGI-скриптом, который «на лету» формирует документ с

    результатами прохождения теста и новыми значениями счетчиков прохождения.

    CGI-скрипт следует написать так, чтобы он мог принимать данные,

    присланные как методом GET, так и методом POST.

    Вариант 8:

    Проверка знания директив web-сервера Apache.

    Порядок выполнения лабораторной работы:

    Для выполнения лабораторной работы установить и настроить web-сервер

    или воспользоваться программным комплексом Denwer (http://denwer.ru)

    или аналогом.

    Создать html-документ с формой.

    Написать CGI-скрипт в соответствии с заданным вариантом.

    Протестировать созданный CGI-скрипт (при тестировании использовать

    методы передачи данных GET и POST).

    Ход работы:

    Для выполнения работы был использован программный комплекс XAMPP.

    Для написания CGI-скриптов был использован язык программирования Perl.

    Во всех CGI-скриптах первой строчкой указывается путь к интерпретатору Perl.

    В папке /xampp/htdocs создан документ «index.html», который содержит форму. Пользователю предлагается ввести свое имя в форму и по нажатию на кнопку «Регистрация» перейти к выполнению теста, вызвав CGI-скрипт «apache-test.cgi», располагающийся по адресу /xampp/cgi-bin. CGI-скрипт получает данные, присланные как методом GET, так и методом POST.

    В CGI-скрипте «apache-test.cgi» объявляется 8 строк, содержащих вопросы, и 8 массивов, содержащих строки с ответами (по 3 строки в каждом массиве). Далее генерируется случайное число – 1 или 2. Если сгенерировалось 1, пользователю предлагается ответить на вопросы 1-4, если 2, ответить на вопросы 5-8.

    После этого подключается модуль CGI, через который происходит обращение к параметрам, переданным скрипту через форму. В данном случае – к имени пользователя. Имя пользователя кодируется, затем записывается в cookie. Кодирование нужно для того, чтобы хранить в cookies текст на кириллице. Иначе при чтении имени вместо, например, записанного «Александр» мы получим «??????N??????N?».

    Также в cookies хранится счетчик посещения пользователя. Скрипт делает попытку прочитать оттуда значение счетчика.

    Далее в скрипте объявляется заголовок ответа, в котором указывается, что ответ будет возвращен в виде HTML-страницы.

    После вывода заголовка происходит проверка значения прочитанного выше счетчика. Если значение счетчика больше 0, то устанавливаем полученное значение как cookie. Во всех остальных случаях устанавливаем как cookie значение 0.

    Далее происходит вывод HTML-страницы с формой, содержащей соответствующие вопросы и варианты ответов. В нижней части страницы пользователю предлагается завершить тест и отправить ответы, вызвав CGI-скрипт «result.cgi», который подсчитывает количество правильных ответов.

    В CGI-скрипте «result.cgi» подключается модуль CGI, через который происходит обращение к параметрам-ответам, соответствующим номерам вопросов в тесте. Далее эти ответы сравниваются с правильными и, если ответ правильный, происходит инкрементация счетчика правильных ответов.

    После этого скрипт открывает файл «counter.dat», располагающийся по адресу /xampp/cgi-bin, считывает оттуда значение глобального счетчика посещений, инкрементирует его, записывает обратно в файл и закрывает файл.

    Далее происходит чтение из cookies записанных ранее имени пользователя и счетчика посещений пользователя. Счетчик посещений пользователя увеличивается, ранее закодированное имя пользователя декодируется. Затем выводится HTML-страница, в которой отображаются результаты теста.

    Разметка html-документа с исходным кодом скрипта:

    Файл «index.html»:

    html>





    ТЕСТ


    Насколько хорошо вы знаете директивы web-сервера Apache?





    Введите ваше имя:















    ТЕСТ


    Насколько хорошо вы знаете директивы web-сервера Apache?








    1.
    ';
    if ($number == 1) {
    print ($question1);
    }
    elsif ($number == 2) {
    print ($question5);
    }
    print '













    2.
    ';
    if ($number == 1) {
    print ($question2);
    }
    elsif ($number == 2) {
    print ($question6);
    }
    print '













    3.
    ';
    if ($number == 1) {
    print ($question3);
    }
    elsif ($number == 2) {
    print ($question7);
    }
    print '













    4.
    ';
    if ($number == 1) {
    print ($question4);
    }
    elsif ($number == 2) {
    print ($question8);
    }
    print '




















    ТЕСТ


    Насколько хорошо вы знаете директивы web-сервера Apache?





    Ваш результат:
    ';
    print($right_counter);
    print '
    из
    4.


    ';
    if ($right_counter > 2) {
    print "Роберт Маккул гордится вами!";
    }
    else {
    print "Роберту Маккулу стыдно за вас!";
    }
    print '


    ';
    print $name;
    print ', вы прошли тест
    ';
    print $counter;
    print '
    раз(а).


    Общее количество прохождений теста:
    ';

    # Выводим счет
    print ("$count");
    print '
    раз.





    написать администратору сайта