(c) Larry Ewing, Simon Budig, Garrett LeSage
с 1994 г.

Кафедра Информатики и Математического Обеспечения

ПетрГУ | ИМиИТ | О кафедре | Мобильные платформы | Лаборатория ИТС | Семинары НФИ/AMICT
Сотрудники | Выпускники | Учебный процесс | Табель-календарь | Курсовые и выпускные работы
Вычислительные ресурсы | Публикации | Архив новостей | Контактная информация

Цель работы

На примере персонального альбома освоить создание комплексных Web-приложений, включающих php-средства работы с сервером БД MySQL, сессии, шаблоны Smarty, функции доступа к файловой системе, загрузку файлов на сервер, обработку данных html-форм, методы автозагрузки классов.

Описание работы

Реализовать систему "Персональный альбом", включающую как минимум четыре php-модуля:

Первый - login.php - страница 1 (С1)
Выводит форму для ввода логина/пароля, выполняет подключение к БД, осуществляет проверку правильности введенных данных. В случае успешной проверки выполняется перенаправление на С2
Второй - album.php - С2
Позволяет просматривать изображения, имеющиеся в альбоме. Выводит форму для загрузки (upload) нового изображения с переходом на C3 при нажатии submit. Выводит форму для выбора удаляемого изображения с переходом на С4 при нажатии submit
Третий - upload.php (С3)
Показывает загруженное пользователем изображение. Выводит форму для добавления подписи к рисунку с переходом на C2 при нажатии submit
Четвертый - delete.php (С4)
Показывает удаляемое изображение с подписью. Выводит форму с вопросом "Действительно удалить?" для удаления выбранного изображения с переходом на C2 при нажатии submit

Основные требования

1. Smarty. Для страниц C2-C4 должены быть реализованы шаблоны на Smarty (см. пример ниже). Оформление может быть произвольным

2. Аутентификация. Для аутентификации необходимо использовать механизм сессий (аналогично Разработка Web-приложений), исключив возможность загрузки страниц альбома без ввода логина/пароля

3. Данные. Данные для аутентификации пользователей должны храниться на сервере БД MySQL kappa (реквизиты для доступа к БД были высланы почтой) в следующих таблицах:

Таблица users с полями login, password
В поле login - идентификатор пользователя (содержит латинские буквы в нижнем регистре, цифры и знак подчеркивания, до 16 символов, начинается с буквы). Поле password хранит пароль пользователя в зашифрованном виде (к примеру, можно использовать функцию md5). Вручную в таблицу добавляется хотя бы одна запись для владельца альбома
Таблица images с полями id, caption
Поле id - идентификатор изображения (число), автоматически увеличивается при добавлении изображения (AUTO_INCREMENT). В поле caption хранится подпись к изображению - строка в кодировке UTF-8 длиной до 256 символов

Данные для подключения к БД должны храниться в скрытой секции конфигурационного файла Smarty (например, [.Database])

4. Файловая система. Все загруженные изображения должны храниться в каталоге $HOME/public_html/images. Необходимо установить полные права (rwx) на каталог images для учетной записи wwwrun (setfacl). При загрузке изображения ему присваивается имя N.jpg (например), где N - номер загруженного изображения (можно использовать id изображения)

5. Классы и методы. Для управления рисунками и работе с БД необходимо реализовать класс ImageManager, методы класса позволяют выполнять: подключение к БД, добавление/удаление информации о рисунке, вывод информации о рисунке. Описание класса должно быть вынесено в отдельный файл и реализована автозагрузка с помощью SPL-функций.

6. Проверки. Необходимо выполнять отслеживание возможных ошибочных ситуаций при работе приложения, выполнять проверку данных, принимаемых из форм, контролировать объемы загружаемых файлов, обрабатывать ошибки при выполнении запросов к БД и т. д.

Пример MVC с использованием Smarty

Описание модулей:

По желанию можно передавать Smarty дополнительные параметры: id изображений, url для action в формах и т.д.

Пример организации модуля C4:

<?php
require_once("config.inc.php");
require_once("db.inc.php");
require_once("auth.inc.php");
require_once("Smarty.class.php");

db_connect();
auth_check();
...
$id = ### Получить id удаляемого изображения через $_GET ###;
$src = ### Сформировать url для img по id ###;
$action = ### Сформировать action url по id ###;
$caption = ### Получить caption из БД по id ###;
...
db_disconnect();

$smarty = new Smarty;
$smarty->assign("id", $id);
$smarty->assign("src", $src);
$smarty->assign("action", $action);
$smarty->assign("caption", $caption);
$smarty->display("delete.tpl");
?>

Критерии оценки работы

Задание оценивается в 8 баллов при условии соблюдения срока, определенного для данной лабораторной работы. При этом задание должно быть выполнено полностью, результат должен соответствовать требованиям задания, автор обязан понимать собственное решение. При несоблюдении сроков сдачи задания, базовый балл уменьшается вдвое каждую пару после срока.