
- •Курсовая работа
- •Глава 1. Теоретические сведения
- •Раздел 1. Рнр
- •Раздел 2. Denwer
- •Раздел 3. MуSql
- •Раздел 4. CodeIgniter
- •Глава 2. Практика.
- •Раздел 1. Разработка структуры и создание базы данных
- •Раздел 2. Фреймворк CodeIgniter. Настройка и совмещение с веб-сервером Denwer
- •Раздел 4. Модели
- •Раздел 4. Контроллеры
- •Раздел 5. Разработка шаблонов и описание функционала
Раздел 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/.