close

Вход

Забыли?

вход по аккаунту

?

Kursach ver 1 00

код для вставкиСкачать
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ УКРАИНЫ
ДОНЕЦКИЙ НАЦИОНАЛЬНЫЙ УНИВЕРСИТЕТ
Кафедра компьютерных технологий
и прикладной механики
Специализация компьютерные технологии
КУРСОВАЯ РАБОТА
на тему: "Разработка веб-сайта для проведения тестирования"
Студент Селюков Никита
Научный руководитель Цванг В.А.
2013г.
СОДЕРЖАНИЕ:
ВВОДНАЯ ЧАСТЬ03
Введение03
Обзор работы04
ОСНОВНАЯ ЧАСТЬ05
Глава 1. Теоретические сведения05 Раздел 1. РНР05
Раздел 2. Denwer06
Раздел 3. MySQL07
Раздел 4. CodeIgniter08
Глава 2. Практика...011
Раздел 1. Разработка структуры и создание базы данных011
Раздел 2. Фреймворк CodeIgniter. Настройка и совмещение
с веб-сервером Denwer016
Раздел 3. Модели018
Раздел 4. Контроллеры019
Раздел 5. Разработка шаблонов и описание функционала020
ЗАКЛЮЧЕНИЕ027
Вывод027 Список литературы028 ВВОДНАЯ ЧАСТЬ
Введение
Все веб-сайты можно разделить на две большие группы: статические и динамические.
Статичеcкий сайт - это набор статических HTML-страниц (HyperText Markup Language). Каждая страница создается вручную, сохраняется и загружается на сервер. Когда требуется изменить содержание такой страницы, редактор вручную изменят его и снова загружает на сервер.
Динамический сайт - сайт, в котором возможно изменять содержимое страниц сайта, не прибегая к программированию. Каждая отображаемая страница таких сайтов основана на шаблонной структуре, в которую вставляется постоянно меняющееся информационное наполнение. Чаще всего оно хранится в базе данных (БД). Когда пользователь запрашивает страницу, соответствующая информация извлекается из базы, вставляется в шаблон, образуя новую веб-страницу, и пересылается веб-сервером в пользовательский веб-обозреватель, который и отображает ее должным образом. Возможность править все страницы предоставляется только определенной категории пользователей (например, администраторам или зарегистрированным пользователям). В некоторых случаях к правке определенного веб-контента допускаются анонимные пользователи (например, на форумах - добавление сообщений). Курсовая работа посвящена возможностям применения языка PHP, системы управления базами данных (СУБД) MySQL, фреймворка CodeIgniter для разработки динамических веб-сайтов.
Апробация данных технологий проводится на примере создания веб-сайта для проведения тестирования. Реализация данного сайта в виде динамического позволит сократить ручную работу (можно быстро увеличивать количество информационного наполнения сайта), достичь максимальной поддержки посетителей, внедрить дополнительные возможности и различные типы тестов.
Цель исследования: разработка системы веб-сайта для проведения тестирования.
Объекты исследования: язык PHP, базы данных MySQL, фреймворк CodeIgniter;
Задачи:
* изучить особенности и возможности языка PHP;
* познакомиться с базами данных MySQL;
* изучить особенности и возможности фреймворка CodeIgniter;
* создать систему сайта для проведения тестирования
Теоретической основой представленного материала являются данные, представленные в справочниках, материал из Интернета.
Практическая значимость исследования заключается в создании системы веб-сайта для проведения тестирования.
Обзор работы
Структура и содержание работы включают:
* Вводную часть
* Основную часть
* Заключение
В вводной части обоснован выбор и актуальность темы, представлена информация для ознакомления с работой.
Основная часть состоит из двух глав: теоретические сведения и практика.
Первая глава состоит из 4 разделов.
В первом разделе рассматривается язык PHP. Второй раздел посвящен выбору веб-сервера. В третьем разделе предоставлена информация о базах данных MySQL. В четвертом разделе речь идет о фреймворке CodeIgniter.
Вторая глава содержит 5 разделов.
В первом разделе проводится разработка структуры базы данных и ее создание. Второй раздел посвящен настройке и совмещению фремворка CodeIgniter c веб-сервером Denwer. В третьем и четвертом разделах предоставлена информация о разработанных моделях и контроллерах соответственно. В пятом разделе рассмотрена разработка шаблонов, описаны возможности сайта и пути их достижения.
Заключение содержит выводы по теме и список литературы.
ОСНОВНАЯ ЧАСТЬ
Глава 1. Теоретические сведения
Раздел 1. РНР
Для разработки веб-сайта могут быть использованы такие языки программирования как PHP, PERL, C, C++, Java и другие. При создании сайта использовался язык PHP.
PHP - скриптовый язык программирования общего назначения, интенсивно применяемый для разработки веб-приложений. В настоящее время поддерживается подавляющим большинством хостинг-провайдеров и является одним из лидеров среди языков программирования, применяющихся для создания динамических веб-сайтов.
Данный язык обладает следующими преимуществами:
* Эффективность. Важное преимущество PHP заключается в том, что он является транслирующим интерпретатором. Такое устройство ядра PHP позволяет обрабатывать сценарии с достаточно высокой скоростью.
* Простота. PHP имеет много разнообразных функций, которые облегчают написание кода. * Гибкость. РНР является встраиваемым языком. Он может интегрироваться в HTML, JavaScript, WML, XML и другие языки. PHP не зависит от веб-обозревателя, не содержит кода, ориентированного на конкретный веб-сервер.
* Наличие большого количества дополнительных библиотек.
Раздел 2. Denwer
Для тестирования проекта использовался веб-сервер Denwer.
Denwer - набор дистрибутивов и программная оболочка, предназначенные для создания и отладки сайтов (веб-приложений, прочего динамического содержимого интернет-страниц) на локальном ПК (без необходимости подключения к сети Интернет) под управлением ОС Windows.
Сразу после установки доступен веб-сервер Apache, работающий на локальном компьютере, на котором может работать неограниченное количество сайтов, что очень эффективно для разработки и отладки сценариев PHP без загрузки его файлов на удаленный сервер. Для запуска практически всех утилит "Денвера" используется приложение Run в подкаталоге /denwer (или /etc) корневого каталога установки "Денвера". При запуске создается виртуальный диск (по умолчанию Z:), где хранятся все файлы проектов.
Особенностью, отличающей Denwer от других WAMP-дистрибутивов, является автоматическая правка системного файла hosts, являющегося локальным аналогом DNS-cервера, что позволяет обращаться к локальным сайтам, работающим под управлением Денвера, по именам, совпадающим с именем папки, расположенной в каталоге home Денвера.
Базовый пакет установки содержит:
* Веб-сервер Apache с поддержкой SSI, SSL, mod_rewrite, mod_php.
* Интерпретатор PHP с поддержкой GD, MySQL, SQLite.
* СУБД MySQL с поддержкой транзакций (mysqld-max).
* Система управления виртуальными хостами, основанная на шаблонах.
* Панель phpMyAdmin для администрирования СУБД.
* Ядро интерпретатора Perl без стандартных библиотек (поставляются отдельно).
* Эмулятор sendmail и сервера SMTP с поддержкой работы совместно с PHP, Perl, Parser и др.
Раздел 3. MуSQL
Для хранения информации на сайте был сделан выбор в пользу реляционной системы управления базами данных (СУБД). Под базами данных (БД) понимаются системы хранения и обработки данных, для доступа к которым используется язык SQL (Structured Query Language). Существует множество различных СУБД. Наиболее известными являются Oracle, MS SQL Server, MySQL, Firebird. Для создания веб-сайта была выбрана СУБД MySQL.
MySQL является решением для малых и средних приложений. Входит в состав серверов WAMP, AppServ, LAMP и в портативные сборки серверов Denwer, XAMPP.
Также MySQL обладает следующими достоинствами:
* Бесплатное распространение. * Высокая скорость при использовании в связке с языком PHP.
* Гибкость СУБД MySQL обеспечивается поддержкой большого количества типов таблиц: пользователи могут выбрать как таблицы типа MyISAM, поддерживающие полнотекстовый поиск, так и таблицы InnoDB, поддерживающие транзакции на уровне отдельных записей. * MySQL портирована на большое количество платформ.
* MySQL имеет API для многих языков, в том числе и PHP.
Раздел 4. CodeIgniter
Многие разработчики сайтов часто, чтобы не писать код с нуля, используют фреймворк. Он помогает упорядочивать разработку, экономить время, с помощью него можно добиться сокращения количества повторяющегося кода.
Наиболее известными фреймворками для PHP являются CakePHP (http://www.cake-php.ru), Kohana (http://kohanaframework.org), CodeIgniter (http://www.codeigniter.ru), Zend (http://www.framework.zend.com). Все они направлены на помощь разработчику и каждый из них имеет свои плюсы и минусы.
Для создания веб-сайта выбор был сделан в пользу CodeIgniter.
Основой работы CodeIgniter является использование подхода MVC (Model-View-Controller, Рис.1) - архитектура программного обеспечения, в которой модель данных приложения, пользовательский интерфейс и управляющая логика разделены на три отдельных компонента, так, что модификация одного из компонентов оказывает минимальное воздействие на другие. Шаблон MVC позволяет разделить данные, представление и обработку действий пользователя на три отдельных компонента.
Контроллер (Controller) отправляет запрос в модель (Model), которая изменяет своё состояние и предоставляет данные. Представление (View) отвечает за отображение информации. Поведение (Controller) интерпретирует данные, которые вводились пользователем, и информируют модель и представление о необходимости соответствующей реакции.
Рис.1. MVC-модель.
Без применения CodeIgniter и дополнительных библиотек, содержащих регулярные выражения, ссылки, по которым осуществляется переход на другие страницы, будут иметь примерно такой вид:
http://mathmod.aspu.ru/?id=2. Такие ссылки непонятны пользователю и плохо запоминаются. С помощью CodeIgniter, возможно построение ЧПУ - понятного для человека представления URL (Uniform Resource Locator).
Например, http://test.nn/tests/index/1 - в этой ссылке каждый сегмент имеет своё значение: tests - контроллер, к которому идёт обращение, index - метод соответствующего контроллера, 1 - переменная, передающаяся в указанный метод (в данном случае при переходе по ссылке будет произведен запуск теста с идентификатором "1"). Использование таких ссылок даёт несколько преимуществ. Помимо того, что эти ссылки будут легко читаемы и запоминаемы, они оказывают влияние на выдачу сайта в поисковых системах.
Фреймворк CodeIgniter обладает следующими особенностями:
* работает практически на любом хостинговом плане, который имеет поддержку PHP версии 5.1 и выше;
* считается одним из быстрых и не требовательных к ресурсам фреймворков. Основное ядро CodeIgniter требует небольшого количества библиотек. Дополнительные библиотеки загружаются динамически по запросу, в зависимости от потребностей в тот или иной момент, так что ядро остается очень гибким и быстрым;
* Малый размер дистрибутива;
* Фреймворк позволяет отказаться от моделей (несмотря на то, что это не приветствуется и не является хорошей практикой);
CodeIgniter обладает такими возможностями, как:
* Поддержка баз данных MySQL, PostgreSQL, MSSQL, SQLite, Oracle;
* Поддержка класса ActiveRecord, который по большей части повторяет синтаксис языка SQL;
* Легко расширяемая система за счет возможности использования сторонних и самописных библиотек, а также дополнения или переопределения существующих;
* Поддержка как сегментированных ЧПУ, так и обычных URL-ов с передачей параметров;
* Фреймворк содержит в себе множество необходимых библиотек, которые создают функционал для работы с файлами, отправки электронных писем, валидации форм, поддержки сессий, работы с изображениями и т.д.;
* Возможность кеширования на стороне сервера SQL-запросов и генерируемых html-страниц. С версии 2.0 для кеширования могут использоваться XCache или APC;
* По умолчанию CodeIgniter не использует шаблонизаторы, но есть возможность использовать его собственный или один из альтернативных шаблонизаторов.
Глава 2. Практика.
Раздел 1. Разработка структуры и создание базы данных
Разработка структуры БД предполагает полное описание всех атрибутов сущностей (полей таблиц). Каждая таблица - массив из однородных элементов, которые принято называть записями. Запись - неделимая единица информации в БД, но можно сформировать такой запрос, чтобы получить какую-то часть этой информации.
Запись может содержать в себе одну или несколько именованных полей. Они задаются при создании таблицы. Каждое из полей имеет определённый тип (например, целое число, текст и другие).
Во все таблицы можно добавлять записи, изменять и удалять их, делать поиск по таблицам и выводить нужную информацию. Все эти действия выполняются с помощью SQL (Structured Query Language) запросов.
Для работы с БД, разработки ее структуры и наполнения существует большое количество приложений, в частности, PHPMyAdmin, MySqlManager, MySQL Administrator, MySQL GUI Tools и другие. Из всех приложений для работы с базой данных выбор был сделан в пользу PHPMyAdmin, так как он обладает следующими преимуществами:
* PHPMyAdmin является свободно распространяемым продуктом;
* Актуальность. Большинство разработчиков используют PHPMyAdmin в качестве приложения для работы с СУБД;
* Понятный интерфейс. Можно обходиться без непосредственного ввода SQL команд;
* Наличие документации. Существует огромное количество пособий по работе с PHPMyAdmin;
* Входит в состав стадартной поставки веб-сервера Denwer.
Для работы с PHPMyAdmin, необходимо выполнить следующую последовательность действий:
1. С помощью Denwer запустить MySql;
2. Перейти на страницу с PHPMyAdmin (http://localhost/Tools/phpMyAdmin);
3. Создать пользователя, который сможет работать с созданной БД, обладая всеми привилегиями. Во вкладке "привилегии" добавить нового пользователя (Рис.2);
Рис.2. Добавление нового пользователя.
4. Заполнить поле "имя пользователя", в поле "хост" выбрать localhost, создать пароль (Рис.3).
Рис.3. Форма заполнения данных о новом пользователе.
5. Выбрать необходимые глобальные привилегии (Рис.4).
Рис.4. Глобальные привилегии.
6. На главной странице PHPMyAdmin в поле "Новая база данных" необходимо вписать название БД "test_nn_database". Для создания таблиц в поле "Создать новую таблицу в базе данных test_nn_database ", вписать названия таблиц. Для заполнения нужной таблицы, выбрать её название и нажать на вкладку "Вставить".
Исходя из требований к созданию веб-сайта, была составлена структура БД (Рис.5).
Рис.5. ER-диаграмма.
Все таблицы имеют идентификатор.
Центральным объектом разрабатываемого сайта является таблица Tests. Каждая запись данной таблицы содержит следующие поля:
* id_tests - идентификатор теста;
* id_themes - идентификатор темы, к которой принадлежит тест;
* name - имя теста;
* population - показатель популярности теста;
* description - описание теста.
Каждый тест обладает связями с таблицей Themes. Каждый тест может принадлежать только одной теме. Таблица Themes состоит из двух полей: идентификатора (id_themes) и названия (name).
Таблицы Questions и Question_variants содержат в себе вопросы для каждого теста и варианты ответов на каждый вопрос соответственно. Таблица Questions состоит из таких полей:
* id_questions - идентификатор вопроса;
* id_tests - идентификатор теста, к которому принадлежит вопрос;
* text - текст вопроса;
* type - тип вопроса.
Список полей для таблицы Question_variants:
* id_question_variants - идентификатор варианта ответа;
* id_question - вопрос, к которому относится вариант ответа;
* text - текст ответа;
* grade - оценка в баллах при выборе текущего ответа.
Для каждого теста может существовать бесконечное количество вопросов. На каждый вопрос может быть бесконечно много вариантов ответа.
В таблице Results хранятся результаты тестов. Каждая запись состоит из таких полей:
* id_results - идентификатор результата;
* id_tests - идентификатор теста, к которому относится результат;
* text - текст результата;
* low_grade - нижний предел оценки в баллах для данного результата;
* high_grade - верхний предел оценки.
Каждый тест содержит несколько различных результатов.
Таблица Users хранит информацию о зарегистрированных пользователях. О каждом пользователе хранится следующая информация:
* id_users -идентификатор пользователя;
* fname - имя пользователя;
* lname - фамилия;
* email - адрес электронной почты;
* login - логин для авторизации на сайте;
* password - пароль;
* category - категория пользователей.
Между таблицей Tests и Users установлена связь много ко многим, т.к. каждый пользователь может пройти бесконечное количество тестов, и каждый тест может быть пройден бесконечным количеством пользователей. Данная связь достигается соединением этих таблиц с таблицей us_tes_res, которая хранит идентификаторы пользователей (id_users), тестов(id_tests) и результата каждого пройденного каждым пользователем теста (id_result).
Таблица ci_sessions создана фреймворком автоматически для более безопасного хранения данных сессий.
Раздел 2. Фреймворк CodeIgniter. Настройка и совмещение с веб-сервером Denwer
В корневой папке установленного веб-сервера Denwer есть подпапка с названием "home". В ней создается папка с именем, совпадающим с адресом сайта (в данном случае test.nn). Затем в ней необходимо создать папку "www", куда и будет сохранен распакованный архив с фреймворком CodeIgniter. В результате получился такой список каталогов (Рис.6)
Рис.6. Список каталогов.
В папке system/application находятся все созданные контроллеры (application/controllers), модели (application/models), представления (application/views). Для правильной организации работы с CodeIgniter, были произведены некоторые изменения. В файле application/config/database.php необходимо указать имя базы данных веб-сайта, а также имя пользователя и пароль для доступа к ней.
В файле autoload. php поменять строку $autoload ['libraries'] = array ('database');. C помощью этой строки происходит автоматическое подключение библиотеки database, входящей в состав CodeIgniter. Она ответственна за работу БД. Эта библиотека будет находиться в автозагрузке, поэтому при обращении каждый раз к сайту, будет автоматически устанавливаться связь с базой данных.
В этом же файле нужно изменить строку $autoload ['helper'] = array ('url');. Этот хелпер содержит функции, позволяющие упростить работу с URL.
В файле config.php указываем url-адрес сайта в строке $config['base_url'].
Пример: $config['base_url'] = 'http://test.nn/';
В файле routes.php необходимо указать контроллер, вызываемый по умолчанию. Для этого нужно изменить значение элемента массива $route с индексом default_controller (по умолчанию равен 'welcome') на необходимый.
Пример: $route[' default_controller '] = 'home';
Контроллер "home" будет вызываться при переходе по адресу http://test.nn/index.php.
В этом же файле указываются все требуемые перенаправления. Например:
$route['themes/(:num)'] = "themes/index/$1";
Данная строка означает, что при переходе по адресу вида themes/"число" из контроллера themes будет производиться вызов метода index, которому будет передан аргумент "число".
Раздел 4. Модели
Модели - это классы PHP, которые построены для работы с информацией в базе данных.
Для данного сайта были созданы 3 модели: Tests_model, Users_model и Admin_model.
Tests_model содержит функции извлечения информации из таблиц Themes, Tests,Questions, Question_variants, Results.
В Users_model описаны функции работы с таблицами Users и us_tes_res.
Например, проверка существования логина пользователя при регистрации, извлечение информации о пройденных пользователем тестах для личного кабинета и др.
Admin_model содержит функции, отвечающие за выполнение запросов вставки, обновления и удаления контента. Раздел 4. Контроллеры
Контроллер - класс, который обеспечивает связь между пользователем и системой, использует модель и представление для реализации необходимой реакции.
В данном проекте реализовано 6 контроллеров: administrator, auth, home, mycab, tests, themes.
Контроллер Administrator реализует логику админ-панели. К нему подключается модель admin_model, содержащая необходимые запросы к БД.
Auth отвечает за аутентификацию пользователей. В нем также реализован метод регистрации пользователей сайта.
Контроллер Home - главная страница сайта. В файле конфигурации config.php указан как контроллер по умолчанию.
Контроллер Themes производит просмотр пользователем списка всех тестов, относящихся к данной теме. Использует модель Tests_model.
Mycab является контроллером личного кабинета пользователя. Подключение моделей Users_model и Tests_model предоставляет функции для извлечения информации о пройденных текущим пользователем тестах.
Контроллер Tests реализует логические операции прохождения конкретного теста пользователем. Выполняется подсчет набранных баллов за каждый ответ на вопрос, выдача результата пройденного теста и занесение в БД информации о прохождении пользователем текущего теста. Для выполнения запросов используется модель Tests_model. Для предотвращения подмены пользователем результатов теста используется библиотека encrypt реализующая шифровку и дешифровку данных.
Все перечисленные контроллеры являются наследниками класса MY_Controller, который расширяет стандартный класс контроллеров CI_Controller. Класс MY_Controller содержит функции отображения правой колонки сайта, приветствия, а также функцию передачи готового представления в браузер. Таким образом, нет необходимости описывать данные методы в каждом из контроллеров, что значительно сокращает количество повторяемого кода. Файл с описанием данного класса находится в папке application/core/.
Раздел 5. Разработка шаблонов и описание функционала
Шаблоном называют часть веб-документа, которая используется в нескольких страницах. Они помогают быстро проводить модификацию всего сайта - изменение информации или оформления в шаблоне отражается на всех страницах, использующих этот шаблон.
В соответствии со стандартами HTML страницы должны содержать определение типа документа (DOCTYPE). DOCTYPE сообщает валидатору веб-обозревателя версию HTML для проверки синтаксиса. Чтобы добиться правильного отображения информации на сайте также необходимо внести в код шаблона meta-теги с указанием типа контента и кодировки.
Пример:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
Все шаблоны хранятся в папке applications/views/.
В основном шаблоне (Рис.7) будет находиться вся статическая часть страницы. Это шапка и нижняя часть сайта.
Рис.7. Основной шаблон.
В верхней части содержатся: заголовок сайта, меню, содержащее ссылки на главную страницу и страницы с различной информацией, приветствие и ссылки, динамически меняющиеся в зависимости от категории пользователя (Табл.1). При успешной авторизации данные о пользователе (имя и категория) заносятся в cookie, что позволяет использовать эти данные на каждой странице сайта.
ВидКатегория пользователяГостьЗарегистрированный и прошедший авторизациюАдминистраторТабл.1. Зависимость вида приветствия от категории пользователей
В нижней части главного шаблона находятся ссылки с общей информацией.
Центральная часть главного шаблона состоит из двух колонок. Правая колонка обычно содержит дополнительную информацию, например список случайных и наиболее популярных тестов (Рис.8). Рис 8. Правая колонка.
CodeIgniter позволяет использовать класс Active Record, который значительно упрощает создание запросов к базе данных.
Например, запрос на выдачу пяти самых популярных тестов выглядит следующим образом:
SELECT id_tests, name
FROM Tests
ORDER BY population DESC
LIMIT 0,5
При использовании класса Active Record запрос будет выглядеть так:
$this->db->order_by('population', 'DESC')->get('Tests',5);
В левой колонке расположен основной контент сайта, который будет меняться в зависимости от текущего url.
На главной странице будут отображены все тесты, сгруппированные по темам. Обзор каждой темы предполагает отображение названия темы и списка тестов, входящих в нее (Рис. 9). Рис 9. Пример отображения темы.
Для этого происходит выборка всех тем и всех тестов каждой выбранной темы. Данные по каждой теме передаются в шаблон themes_view.
Для отображения теста использовалось несколько шаблонов: шаблон подготовки к тесту (Рис.10), содержащий правила прохождения, описание теста и другую информацию, шаблон для отображения текущего вопроса и шаблон отображения результата теста (Рис.11).
Рис.10. Пример отображения подготовки к тесту.
Рис.11. Пример отображения результата теста.
Шаблон для отображения вопросов состоит из названия теста, текста вопроса и списка вариантов ответа. Варианты ответов на текущий вопрос выбираются аналогично выборке тестов из конкретной темы. В зависимости от типа вопроса или теста отображение может меняться. В данной работе представлены два типа вопросов: с одиночным и множественным выбором вариантов ответа. В первом случае в шаблоне используются элементы формы типа radio, во втором - checkbox (табл.2). ВидВыбор вариантов ответаОдиночныйМножественныйТабл.2. Отображение вопросов в зависимости от типа.
После ответа пользователем на последний вопрос теста происходит ряд действий:
1. Выдача результата теста пользователю, исходя из набранных им баллов. Для этого используется метод модели Tests_model get_test_result($id_tests, $schore), где $id_tests- идентификатор текущего теста, а параметр $schore - количество набранных пользователем баллов.
2. Увеличение популярности теста - метод population_plus($id) модели Tests_model. Параметр $id- идентификатор текущего теста.
3. Если пользователь прошел аутентификацию, добавление идентификаторов теста, пользователя и полученного им результата в таблицу us_tes_res. При повторном прохождении пользователем конкретного теста производится поиск соответствующей записи и результат обновляется.
Шаблоны для страниц регистрации (Рис.12) и авторизации (Рис. 13) содержат соответствующие поля формы, оповещения об ошибках и сообщение об успешном проведении операций (для регистрации). При успешной авторизации проводится перенаправление на главную страницу сайта.
Рис 12. Пример формы регистрации. Ввод некорректных данных.
Для проверки валидности формы регистрации использовался хелпер form и библиотека form_validation. Проверялись следующие условия:
* Заполнение всех полей формы
* Корректный ввод адреса электронной почты.
* Длина логина не менее 3-х символов
* Длина пароля не менее 5-ти символов
* Совпадение значений полей Пароль и Подтверждение пароля
* Проверка на существование пользователя с текущим логином.
При невыполнении каких-либо условий на экран выводились соответствующие сообщения.
Рис. 13. Форма авторизации
У зарегистрированных пользователей появляется возможность вести учет пройденных тестов (Рис. 14). Реализация состоит в извлечении всех идентификаторов тестов и результатов из таблицы us_tes_res:
$this->db->get_where('us_tes_res', array('id_users' => $id_user))
Далее извлекается информация о каждом тесте (название и идентификатор темы для создания ссылки "К теме") и результате (текст результата). Данные передаются в шаблон mycab_view.php
Рис.14. Личный кабинет пользователя.
Если пользователь имеет права администратора, он получает доступ к админке, где находятся функции управления контентом сайта. При загрузке контроллера выполняется проверка категории пользователя. Если посетитель не является администратором, то он получит сообщение об ошибке (404 - страница не найдена). Права администратора дают возможность добавлять, редактировать и удалять элементы контента: темы, тесты, вопросы, варианты ответов, результаты. Также имеется функция для просмотра информации о конкретном тесте (Рис. 15).
Рис.15. Просмотр теста
В контроллере Administrator переопределена функция right_col(), которая выполняет загрузку правой колонки сайта. Она примет вид меню (Рис.16).
В левой колонке будет отображаться непосредственно ход выполнения выбранного из списка действий, например добавление теста (рис. 17).
Рис.16. Админ-панель. Правая колонка.
Рис.17. Форма добавление теста.
ЗАКЛЮЧЕНИЕ
Вывод
В результате выполнения курсовой, был создан динамический веб-сайт для проведения тестирования. Для его разработки применялось актуальное программное обеспечение, без помощи которого не было бы возможности добиться поставленной цели. Это программное обеспечение включает в себя:
* Язык программирования PHP.
* Фреймворк CodeIgniter.
* Веб-сервер Denwer.
* Реляционная система управления БД MySQL.
* Приложение PHPMyAdmin.
С помощью этих инструментов значительно сокращена ручная работа и повторяющийся код. Чтобы добиться ЧПУ без применения CodeIgniter и дополнительных библиотек, необходимо вносить много изменений в файл .htaccess. Таким образом, затрачено меньше времени на разработку сайта. Всё информационное наполнение сайта находится в БД. Посетители сайта делятся на три группы: гости, зарегистрированные пользователи и администраторы. Посетители всех групп могут свободно проходить выбранные ими тесты на различные темы. Зарегистрированные пользователи имеют доступ к личному кабинету, где могут видеть список тестов, которые они проходили, и их результатов. Имея права администратора можно быстро наполнять сайт контентом без изменения кода. Список литературы
1. Котeров, Д. В. К73 РНР 5 / Д. В. Котеров, А. Ф. Костарев. - 2-е изд., перераб. и доп. - СПб.: БХВ-Петербург, 2008. - 1104 с: ил. - (В подлиннике)
2. Документация по CodeIgniter [Электронный ресурс] - Режим доступа: http://codeigniter.snippets.su/, свободный.
3. Справочник по изучению языка разметки документов [Электронный ресурс] - Режим доступа: http://htmlbook.ru/, свободный.
28
Документ
Категория
Рефераты
Просмотров
262
Размер файла
1 535 Кб
Теги
ver, kursach
1/--страниц
Пожаловаться на содержимое документа