Пояснительная записка (WEB-сайт для Института международного сотрудничества Дальневосточного государственного университета путей сообщения), страница 6
Описание файла
Файл "Пояснительная записка" внутри архива находится в следующих папках: WEB-сайт для Института международного сотрудничества Дальневосточного государственного университета путей сообщения, Ким Е.Д. Документ из архива "WEB-сайт для Института международного сотрудничества Дальневосточного государственного университета путей сообщения", который расположен в категории "". Всё это находится в предмете "дипломы и вкр" из 8 семестр, которые можно найти в файловом архиве ДВГУПС. Не смотря на прямую связь этого архива с ДВГУПС, его также можно найти и в других разделах. .
Онлайн просмотр документа "Пояснительная записка"
Текст 6 страницы из документа "Пояснительная записка"
Таблица «Вопросы директору» содержит следующие поля:
– ID вопроса (тип SMALLINT);
– Имя (тип VARCHAR);
– Отчество (тип VARCHAR);
– E-mail (тип VARCHAR);
– Тема вопроса (тип TEXT);
– Вопрос (тип TEXT);
– Дата подачи заявки (тип DATE).
Таблица «Заявки на регистрацию в международный клуб»:
– ID заявки (тип SMALLINT);
– Имя по-русски (тип VARCHAR);
– Фамилия по-русски (тип VARCHAR);
– Имя по-английски (тип VARCHAR);
– Фамилия по-английски (тип VARCHAR);
– Выбранный блок интересов (тип TEXT);
– E-mail (тип VARCHAR);
– Номер телефона (тип VARCHAR);
– Дата отправки заявки (тип DATE).
Таблица «Новости»:
– ID новости (тип SMALLINT);
– Заголовок (тип TEXT);
– Краткое описание (тип TEXT);
– Дата публикации (тип DATE);
– Путь к картинке новости (тип VARCHAR).
Таблица «Сотрудники»:
– ID сотрудника (тип SMALLINT);
– Должность (тип TEXT);
– Имя (тип VARCHAR);
– Фамилия (тип VARCHAR);
– Отчество (тип VARCHAR);
– Рабочий телефон (тип VARCHAR);
– Аудитория (тип VARCHAR);
– E-mail (тип TEXT);
– Фото (TEXT).
Таблица «Блог студента за границей»:
– ID блога (тип SMALLINT);
– Имя (тип VARCHAR);
– Фамилия (тип VARCHAR);
– Университет (тип TEXT);
– Страна (тип TEXT);
– Краткое описание (тип TEXT);
– Текст(тип TEXT);
– Фото 1 (тип VARCHAR);
– Фото 2 (тип VARCHAR);
– Фото 3 (тип VARCHAR);
– Дата публикации (тип DATE).
Таблица «Пользователи»:
– ID пользователя (тип SMALLINT);
– Логин (тип VARCHAR);
– Пароль (тип VARCHAR).
Следует отметить, что поле «пароль» при вводе в него значения будет зашифровано алгоритмом хеширования MD5, при обращении к значениям в данном поле будет производиться дешифрация значений.
Хеширование или хэширование – преобразование массива входных данных произвольной длины в (выходную) битовую строку фиксированной длины, выполняемое определённым алгоритмом.
3.4.2 Реализация базы данных в phpMyAdmin
Далее необходимо создать базу данных, воспользовавшись web-приложением phpMyAdmin.
Получив пароль на хостинге (или на локальном сервере) необходимо войти как пользователь и приступить к созданию таблиц (рисунок 15).
Рисунок 15 – Создание таблиц в phpMyAdmin
Следует отметить, что создавать таблицы, изменять поля и т.д. данное web-приложение позволяет как автоматизированно (простое изменение значения поля или изменения свойства поля через специальный интерфейс или изменение всего вручную, т.е. sql-запросами).
3.5 Реализация серверной части
3.5.1 Реализация ядра системы
Ядро реализуемой системы состоит из 4 файлов:
– index.php;
– config.php;
– ACore.php;
– ACore_admin_php.
Файл index.php является единой точкой входа пользователя в систему.
Данный сценарий делает проверку передаваемых GET-параметров на html и php теги, и в случае положительного исхода переходит по адресу с заданными параметрами, иначе передает параметр «main» и перенаправляет на главную страницу.
Код проверки приведен ниже.
if ($_GET['option']) {
$class = trim(strip_tags($_GET['option']));
}
else {
$class = 'main';}
Функция trim удаляет по краям строки любые пробельные символы, в том числе и символ перевода строки. Так же существуют функции rtrim и ltrim, которые удаляют пробелы вконце иили вначале строки.
Функция strip_tags возвращает строку, очищенную от тегов html и php.
Пример перехода на страницу с параметрами «?option=view»:
if (file_exists("classes/".$class.".php")) {
//exit("<p>Не правильные данные для входа</p>");
include("classes/".$class.".php");
if (class_exists($class)) {
if ($class=="view") {
$obj = new $class;
$obj->get_feed();
}
}
else {
exit("<p>Не правильные данные для входа</p>");
}
}
else {
exit("<p>Неправильный адресс</p>");
}
Получая передаваемые параметры, данный сценарий ищет полученный класс в папке классов. При положительном результате создается объект класса и выполняется функция (выполняется или какой-либо запрос в базу данных, либо отображение чего-либо или и то и то).
Так же данный сценария включает в себя соединение с базой данных и двух сценариев, содержащих суперклассы, от которых будут наследованы все остальные.
Ниже представлен перечень всех классов.
ACore – суперкласс, от данного класса наследована большая часть классов, имеет методы для построения главной страницы по модулям (header, навигация и др. блоки), а так же метод абстрактный метод get_feed(), который наследуют все классы потомки и который необходимо описать для каждого класса.
ACore_admin – аналогичный предыдущему суперкласс, расширенный методами для административной панели – get_text_post() и get_text_blog(), которые делают выборку из базы данных и возвращают значения записи в массиве данных, необходимо для изменения новости или записи.
View – класс, метод get_feed() которого совершает выборку из базы данных и выводит все новости института на главной странице в соответствующем блоке.
Sblog – класс, метод get_feed() совершает выборку из базы данных и выводит все блоги студентов за границей.
Sblog_view – класс-страница просмотра блога студента за границей.
Admin – класс, панель администрации.
Add_post – метод данного класса get_feed() отображает форму для добавления новости института, с момента отправки формы выполняется функция obr(), выполняющая запрос в базу данных и добавляет запись в базу данных.
Update_post – метод данного класса get_feed() отображает форму для изменения новости института, с момента отправки формы выполняется соответствующая функция obr().
Delete_post – метод данного класса obr() выполняет sql-запрос на удаление с полученными GET-параметрами.
Классы add_blog, update_blog, delete_blog аналогичны вышеописанным классам новостей института.
Login – класс, отображает панель входа, при входе сравнивает полученные данные с базой данных (с записями в таблице users) – если данные совпадают с какой-либо записью из этой таблицы и она одна – вход разрешен.
Logout – класс, удаляет сессии и cookie-файлы, совершает выход из личного кабинета.
Ask_form – класс, отображает форму для заполнения пользователем (отправка вопроса директору). После момента отправки выполняется функция obr() и добавляет запись в базу данных.
Questions – класс, выводит вопросы директору из базы данных в таблицу-отчет.
Delete_question – класс, функция данного класса совершает удаление выбранного вопроса с переданными GET-параметрами.
Obmen_programms – класс, отображающий страницу с обменными программами ИМС.
Contacts – класс, отображающий контакты с помощью выборки из базы данных.
History – класс, отображающий страницу с историей института.
Kafedra – класс, отображающий страницу с информацией о кафедре.
Rus_abit – класс, отображающий страницу с информацией для российских абитуриентов.
Festu_int_club – класс, отображающий страницу о Международном клубе ДВГУПС.
Festu_int_club_reg – класс, отображающий форму для заполнения заявки в Международный клуб ДВГУПС. После отправки формы функция obr() добавляет запись в базу данных.
Festu_int_club_view – класс, позволяющий просмотреть все заявки в Международный клуб ДВГУПС в панели администратора.
Delete_festu_int_club_reg – класс, функция obr() удаляет заявку.
Gallery – класс, отображающий страницу с галереей. Следует отметить, что галерея является подключенным модулем.
3.5.2 Реализация работы с базой данных
За подключение к базе данных отвечает сценарии config.php, ACore.php и ACore_admin.php. Код сценария config.php представлен ниже.
<?php
define('HOST', 'localhost');
define('USER', 'mini');
define('PASSWORD', '12345');
define('DB', 'mini_cms');
?>
В данном файле объявляются переменные логина, пароля, хоста и названия базы данных.
Непосредственно подключение производится в сценариях ACore.php и ACore_admin.php.
Код подключения представлен ниже.
protected $db;
public function __construct() {
$this->db = mysql_connect(HOST, USER, PASSWORD);
if (!$this->db) {
exit("Ошибка соединения с базой данных".mysql_error());
}
if (!mysql_select_db(DB,$this->db)) {
exit("Нет такой базы данных".mysql_error());
}
mysql_query("SET NAMES 'UTF8'");
}
За подключение отвечает функция mysql_connect(), которая принимает хоста, логин и пароль от базы данных в качестве аргументов и возвращает единицу при положительном исходе и ноль в другом случае.
Далее будут рассматриваться выборка блогов и новостей, а также их добавление, изменение и удаление.
Поскольку блоги студентов за границей и новости института реализованы аналогично, рассмотрим функционал на примере новостей института.
За выборку новостей отвечает класс main (сценарий main.php), в частности, наследованная от суперкласса ACore.php функция get_feed().
Сначала сценарий выполняет запрос на выборку из базы данных нужных полей (с обратной сортировкой по дате).
Далее в цикле идет вывод html-кода совместно с результатами запроса в базу данных.
Код запроса на выборку:
$query = "SELECT id_post, title, description, text, date, img_src FROM posts ORDER BY date DESC";
$result = mysql_query($query);
if (!$result) {
exit(mysql_error());
}
Код вывода результата на страницу:
$row = array();
for($i = 0; $i < mysql_num_rows($result); $i++) {
$row = mysql_fetch_array($result, MYSQL_ASSOC);
printf("
<div class='post'>
<div class='post_title'><div class='post_date'><div>%s</div></div>
<a href='?option=view&id_text=%s'>%s</a>
</div>
<img src='%s' alt='post_img_960x480'>
<div class='post_description'>
%s . . .
</div>
<div class='post_read_more'>
<a href='?option=view&id_text=%s'><div>Читать далее</div></a>
</div>
</div>",$row['date'], $row['id_post'],$row['title'],$row['img_src'],$row['description'], $row['id_post']);
}
Так же результат работы сценария представлен на рисунке 22.
Рисунок 22 – Результат работы сценария main.php
Следует отметить, что при выводе результата в тег гиперссылки на статью помещается номер идентификатора статьи как GET-параметр.
За построение и отображение отдельной страницы с новостью отвечает сценарий view.php с одноименным классом и функцией get_feed() – производится выборка из базы данных и вывод с html-кодом.
Добавление записи происходит следующим образом:
– за добавление отвечает класс add_post;
– пользователь заполняет поля поста на специально сгенерированной странице с web-формой (функция get_feed()), затем отправляет;
– после отправки выполняется функция obr(), которая с помощью запроса в базу данных добавляет запись.
Код функции obr() представлен ниже.
protected function obr() {
if (!empty($_FILES['img_src']['tmp_name'])) {
if(!move_uploaded_file($_FILES['img_src']['tmp_name'], 'images/'.$_FILES['img_src']['name'])){
exit("Не удалось загрузить изображение");
}
$img_src = 'images/'.$_FILES['img_src']['name'];
}
else {