Министерство образования и науки РФ
Новосибирский государственный технический университет
Кафедра вычислительной техники
Дисциплина «Инфокоммуникации»
Лабораторная работа №3
«Создание тестовой системы и счетчика посещений страницы средствами CGI и PHP»
Факультет: АВТ
Группа: АМ-510
Студенты: Петричук Е. В.
Умрихина Е. В.
Преподаватель: Новицкая Ю.В.
Новосибирск 2009
Задание
Во всех вариантах задания необходимо разработать CGI-модуль и PHP-скрипт.
Вариант 3
CGI. Любой психологический тест и текстовый счетчик посещения страницы.
PHP. Любой психологический тест и вывод результатов в виде таблицы с сортировкой по убыванию или возрастанию. При повторном входе пользователя вывод его предыдущего результата.
Структура CGI – модуля
Этот модуль состоит из трех исполняемых файлов:
l test_print.exe стартовая страница психологического теста, в которой частично происходит обработка результатов теста, при помощи тега iframe на странице отображается текстовый счетчик посещения страниц;
l test_result.exe – страница, отображающая результаты теста;
l test_visit.exe – текстовый счетчик посещения страниц.
Структура PHP – скрипта
Этот модуль состоит из двух скриптов:
l test_print.php стартовая страница психологического теста;
l test_result.php – страница, отображающая результаты теста; при повторном входе пользователя отображается его предыдущий результат, также отображается список качеств в порядке убывания (то есть первый в списке – это наиболее развитое качество).
Обработка результатов
В обоих модулях предварительный результат обрабатывается на стартовой странице с помощью функций, написанных на JavaScript. Для дальнейшей обработки результат передается серверу при помощи метода GET через переменную окружения.
Выводы по работе
l Доступ к переменной окружения в PHP реализован проще, так как внутренние механизмы PHP сами разбивают строку на внутренние переменные.
l Отладка CGI-модуля чрезвычайно сложная процедура. PHP-скрипты отлаживать гораздо легче.
l Типы данных в PHP присваиваются автоматически в зависимости от контекста. Механизм доступа к значению переменной похож на язык Bash для Unix. А в языке C типы данных присваиваются «руками».
l PHP достаточно легок в изучении благодаря схожести синтаксиса с языком C.
Исходные тексты стартовых страниц
CGI-модуль
#include <iostream.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
//Вопросы на тест
char voprosy[49][120] = {
"Самооценка структуры темперамента",
...
"Бывает, что вы говорите о вещах, в которых не совсем разбираетесь?"};
void print_answer_form(int i)
{
cout << "<input type = radio name = Answer value = 1 onclick = 'javascript:checking(answer_form_" << i << ");'> да" << endl;
cout << "<br><input type = radio name = Answer value = 0 onclick = 'javascript:checking(answer_form_" << i << ");'> нет" << endl;
cout << "</form>" << endl;
}
void print_submit_form()
{
cout << "<form name = submit_form action = http://localhost/cgi/test_result.exe method = get>" << endl;
cout << "<input type = hidden name = iskren_hidden>" << endl;
cout << "<input type = hidden name = extrav_hidden>" << endl;
cout << "<input type = hidden name = rigid_hidden>" << endl;
cout << "<input type = hidden name = emo_vozb_hidden>" << endl;
cout << "<input type = hidden name = temp_reak_hidden>" << endl;
cout << "<input type = hidden name = aktiv_hidden>" << endl;
cout << "<input type = submit value = 'Получить результаты теста' onclick = 'javascript:update_submit_form();'>" << endl;
cout << "</form>" << endl;
}
void print_script()
{
cout << "<script language = 'javascript'>" << endl;
cout << "var iskren = 0" << endl; //Искренность
cout << "var extrav = 0" << endl; //Экстраверсия
cout << "var rigid = 0" << endl; //Ригидность
cout << "var emo_vozb = 0" << endl; //Эмоциональная возбудимость
cout << "var temp_reak = 0" << endl; //Темп реакций
cout << "var activ = 0" << endl; //Активность
cout << "var i = 0" << endl;
cout << "var param = 2" << endl;
//Проверка на искренность
cout << "function check_iskren(temp_param, i)" << endl;
cout << "{" << endl;
cout << "if((temp_param == 1) && ((i == 30) || (i == 36) || (i == 42) || (i == 48)))" << endl;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.