Задание по курсу «Web-программирование»
Предисловие
Для выполнения задания вам потребуется установить на вашем компьютере веб-сервер Apache, а также интерпретатор PHP и базу данных MySQL. Рекомендации по установке базового комплекта «Денвер», включающего в себя веб-сервер Apache, интерпретаторы языков PHP и Perl, а также базу данных MySQL, приведены в распечатке «Базовый комплект «Джентльменский набор Web-разработчика» (электронный вариант этой распечатки можно взять здесь) или на сайте проекта www.denwer.ru.
Задание
Для получения зачета по курсу вам необходимо сделать сайт, похожий по функциональности на сайт http://album.ixit.ru. Можно сделать полностью аналогичный или похожий сайт.
Внимание! По сравнению с предыдущими годами задание для сайта album.ixit.ru немного изменилось (в нюансах, но тем не менее). Пожалуйста, не приносите на зачет сайты (аналогичные album.ixit.ru), выполненные студентами предыдущих курсов.
Постановка задачи
Постановка задачи будет рассмотрена на примере сайта http://album.ixit.ru.
Графические элементы и фотографии, используемые на сайте album.ixit.ru (zip-архив)
Общее задание по сайту
- Для упрощения работы с сайтом страницы создаются на сервере динамически с помощью языка программирования PHP. При этом всё оформление (дизайн) страницы убрано в файлы header.php и footer.php.
Вашей задачей будет разбить исходный HTML-код страницы так, чтобы повторяющиеся элементы страницы убрать в два файла – header.php и footer.php.
- На сайте должен быть запрещен вывод списка содержимого директории, если в ней нет индексного файла (это касается директорий /img/ и /photo/, а также их поддиректорий).
Дополнение к заданию
Подумайте над тем, как запретить просмотр только одной директории – например, /img/, а просмотр содержимого директории /photo/ разрешить. (Разумеется, здесь под просмотром содержимого имеется в виду разрешение серверу выводить список с содержимым директории в случае отсутствия в данной директории индексного файла).
Дополнительный вопрос
Например, в директории есть два индексных файла – index.htm и index.html. Какой из них будет загружен и почему именно он?
- На сайте должна осуществляться обработка ошибок 403 (просмотр запрещен) и 404 (файл не найден). То есть при возникновении данных ошибок, в броузере должна открываться страница с сообщением о соответствующей ошибке. Эти страницы также должны быть оформлены в общем стилевом оформлении сайта.
- На сайте должен быть сделан выбор из двух тем оформления – «кофе» или «море». Выбранная тема оформления страниц сайта должна сохраняться при переходе со страницу на страницу. При этом, если выбрана какая-то тема, то ссылка на выбор данной темы должна быть неактивной.
Комментарии и рекомендации к разделу «Общее задание по сайту»
Фотоальбом
- На главной странице сайта http://album.ixit.ru фотографии должны представлять из себя rollover-изображения – в обычном состоянии фотография черно-белая, но если к ней подвести указатель мыши, она должна заменяться на цветную.
Дополнение к заданию
Подумайте над тем, как добавить еще три дополнительные фотографии в фотоальбом.
Сейчас в фотоальбоме 9 фотографий. А как сделать, чтобы в фотоальбоме было 12 фотографий? (Соответственно появится дополнительный четвертый ряд с фотографиями на главной странице). При этом все 12 фотографий, расположенные на главной странице, должны представлять из себя rollover-изображения.
Три дополнительные фотографии находятся в zip-архиве с графическими элементами – соответственно это будут фотографии photo10, photo11 и photo12.
Добавлять дополнительные пункты (10, 11 и 12) в скрипт для голосования необязательно.
- Чтобы не делать вручную страницы с полноразмерными фотографиями (9 страниц), вам необходимо написать PHP-скрипт (1 страница), который по запросу будет формировать HTML-код для показа той или иной фотографии. При этом номер фотографии будет передаваться методом GET следующим образом:
http://album.ixit.ru/photo.php?photo=X
где photo.php – имя скрипта,
Х – номер фотографии (от 1 до 9).
При этом следует сделать проверку – если номер фотографии лежит вне заданных пределах (1...9), то в данном случае нужно перенаправлять посетителя на главную страницу сайта.
Дополнение к заданию
Подумайте над тем, как изменить данный скрипт, если у вас в фотоальбоме будет фотографий не 9, а 12.
- Ссылки с главной страницы сайта на страницы с полноразмерными фотографиями должны выглядеть следующим образом (для упрощения их вида):
http://album.ixit.ru/photoХ.html
где Х – номер фотографии (от 1 до 9).
- На страницах фотоальбома должны присутствовать ссылки на предыдущую и на следующую страницу фотоальбома. Следует корректно обрабатывать следующую ситуацию – для страницы с первой фотографией нет предыдущей страницы (то есть, нет страницы с фотографией номер 0), а для страницы с девятой фотографией нет следующей страницы (то есть, нет страницы с фотографией номер 10).
Комментарии и рекомендации к разделу «Фотоальбом»
Голосование
- При переходе с главной страницы сайта на страницу с голосованием ни один из пунктов не должен быть выделен.
- На каждой странице фотоальбома должна быть ссылка на страницу с голосованием. При этом, при переходе со страницы фотоальбома на страницу с голосованием должен быть выделен тот пункт (та фотография), с которой был осуществлен переход.
- На странице с голосованием рядом с пунктами голосования должна отображаться фотография, соответствующая тому пункту, который выбран в данный момент.
Если ни один из пунктов не выбран, должна отображаться пустая «заглушка», выполненная в стиле текущей темы оформления (см. пункт 4).
- При голосовании, на стороне посетителя (в броузере) должна осуществляться проверка на то, чтобы при голосовании был выбран какой-нибудь пункт. Если ни один из пунктов не выбран, то должно появляться окошко с сообщением о том, что нужно выбрать какой-нибудь пункт.
- Также при обработке результатов голосования, на сервере должна осуществляться проверка на то, что посетитель выбрал какой-либо из пунктов (на тот случай, если посетителю всё же удалось избежать такой проверки в броузере и проголосовать, не отметив ни один из пунктов). В данном случае, посетитель должен быть направлен на страницу с голосованием, где ему будет выведено сообщение, что нужно выбрать какой-нибудь пункт.
- Каждый посетитель может голосовать только один раз.
- Результаты голосования должны выводиться в процентах с визуальным представлением в виде графика.
Дополнение к заданию
Сейчас у каждой фотографии (при выводе результатов голосования) свой цвет графика. Подумайте над тем, как сделать, чтобы у всех пунктов был один и тот же цвет.
- При подведении указателя мыши в результатах голосования к какому-либо пункту рядом должна выводиться фотография, соответствующая данному пункту.
При щелчке мышкой по какому-либо пункту в результатах голосования должен осуществляться переход на соответствующую страницу с фотографией.
- Информация о результатах голосования должна сохраняться или в базе данных (MySQL), или в текстовом файле.
Комментарии и рекомендации к разделу «Голосование»

Необходимые материалы и комментарии к заданию