Помощь в написании студенческих работ
Антистрессовый сервис

Разработка фотохостинга

КурсоваяПомощь в написанииУзнать стоимостьмоей работы

В интернете есть масса различных изображений, каждый день люди фотографируют что-нибудь и появляется необходимость поделится своей фотографией с другими. Для размещения фотографий используются фотохостинги, которых огромное количество в сети, но все они удовлетворяют требованиям пользователей. Нет возможности заливать полноразмерные изображения, а если и есть такая возможность, то она… Читать ещё >

Разработка фотохостинга (реферат, курсовая, диплом, контрольная)

Кафедра «Информатика и программное обеспечение»

КУРСОВОЙ ПРОЕКТ

Разработка фотохостинга по дисциплине «Разработка и администрирование Web-узлов»

Выполнил: студент Климов А. В.

Преподаватель: Белов Е. А.

Брянск 2013

Задание на курсовую работу

Разработать фотохостинг, в котором будут реализованы добавление альбомов, изображений, комментариев, регистрация пользователей. Управление сайтом будет осуществляться через интерфейс «Администратора».

1. Теоретическая часть

2. Аналитическая часть

3. Конструкторская часть

4. Руководство пользователя

5. Руководство администратора

6. Экспериментальная часть

Заключение

В интернете есть масса различных изображений, каждый день люди фотографируют что-нибудь и появляется необходимость поделится своей фотографией с другими. Для размещения фотографий используются фотохостинги, которых огромное количество в сети, но все они удовлетворяют требованиям пользователей. Нет возможности заливать полноразмерные изображения, а если и есть такая возможность, то она предоставляется за деньги. Так же не на всех сайтах есть возможность оставлять комментарии под фотографиями.

1. Теоретическая часть

Веб-сайт (от английского website, от web — паутина, веб и site — «место») — это совокупность связанных между собой веб-страниц, которые доступны в интернете через протоколы HTTP/HTTPS. Совокупность всех общедоступных веб-сайтов называют всемирной паутиной или сетью. Страницы веб-сайта объединены не только общим корневым адресом, но и темой, логической структурой, оформлением и/или авторством.

Сайты делятся на несколько категорий по различным признакам.

Один из основных признаков — природа содержимого сайта. Согласно этому признаку, сайты делятся на статические и динамические.

Статический сайт — сайт с подготовленным заранее содержимым. Файлы выдаются пользователям в том же виде, в котором они хранятся на сервере. Первые сайты в Интернете относились к категории статических.

Динамический сайт — содержимое сайта создается при помощи специальных скриптов (сценариев) на основе данных из любого другого источника.

Так же сайты делятся по видам верстки:

Вёрстка с помощью слоёв. Слои представляют собой структурные элементы, которые можно размещать на веб-странице путем наложения их друг на друга с точностью до пикселя. Скрипты позволяют изменять параметры слоя динамически. Это дает возможность создавать на странице разные эффекты, такие как выпадающие меню, игры, разворачивающиеся баннеры, плавающие окна и прочее. До недавнего времени в качестве основных инструментов верстки выступали фреймы и таблицы. Фреймы, ввиду их некоторых проблем [1], уходят в прошлое: например, стандарт HTML 5 более не включает в себя поддержку фреймов.

Вёрстка с помощью таблиц. Браузеры преднамеренно расценивают таблицу как один объект, из-за чего содержимое таблицы не отображается до тех пор, пока оно целиком не будет загружено на локальный компьютер. При использовании таблицы в качестве каркаса для размещения элементов веб-страницы, её исходное преимущество обращается в недостаток, поскольку приводит к задержке вывода содержимого. Следует учитывать также и растущий объем веб-страниц при активном использовании таблиц, особенно в случае их вложенности друг в друга. Всё это приводит к тому, что табличная верстка вызывает ненужные задержки вывода информации в браузере.

HTML (HyperText Markup Language, язык разметки гипертекста) — это система верстки, которая определяет, как и какие элементы должны располагаться на веб-странице. Информация на сайте, способ ее представления и оформления зависят исключительно от разработчика и тех целей, которые он перед собой ставит.

PHP (англ. PHP: Hypertext Preprocessor — «PHP: препроцессор гипертекста»; первоначально Personal Home Page Tools — «Инструменты для создания персональных веб-страниц») — скриптовый язык программирования общего назначения, интенсивно применяемый для разработки веб-приложений. В настоящее время поддерживается подавляющим большинством хостинг-провайдеров и является одним из лидеров среди языков программирования, применяющихся для создания динамических веб-сайтов.

CSS (Каскадные таблицы стилей) - это язык, содержащий набор средств для описания внешнего вида отображения любых HTML-документов. С его помощью можно полностью управлять стилем и расположением каждого элемента Web-страницы, что проще и гораздо функциональнее использования обычного набора HTML-тегов.

AJAX (Asynchronous Javascript and XML — «асинхронный JavaScript и XML») — подход к построению интерактивных пользовательских интерфейсов веб-приложений, заключающийся в «фоновом» обмене данными браузера с веб-сервером. В результате, при обновлении данных веб-страница не перезагружается полностью, и веб-приложения становятся более быстрыми и удобными.

База данных — представленная в объективной форме совокупность самостоятельных материалов (статей, расчётов, нормативных актов, судебных решений и иных подобных материалов), систематизированных таким образом, чтобы эти материалы могли быть найдены и обработаны с помощью электронной вычислительной машины (ЭВМ).

MySQL — это одна из самых популярных и самых распространенных СУБД (система управления базами данных) в интернете. Она не предназначена для работы с большими объемами информации, но ее применение идеально для интернет сайтов, как небольших, так и достаточно крупных. MySQL отличатся хорошей скоростью работы, надежностью, гибкостью. Работа с ней, как правило, не вызывает больших трудностей. Поддержка сервера MySQL автоматически включается в поставку PHP. Приложение на РНР, использующее для хранения информации базу данных (в частности MySql) всегда работает быстрее приложения, построенного на файлах. Дело в том, что базы данных написаны на языке C++, и написать на PHP программу, которая работала бы с жёстким диском эффективнее базы данных — задача неразрешимая по определению, поскольку программы на PHP в принципе работают медленнее, чем программы на C++, так как РНР — интерпретатор, а С++ - компилятор.

Apache HTTP-сервер — свободный веб-сервер. Apache является кроссплатформенным ПО, поддерживает операционные системы Linux, BSD, Mac OS, Microsoft Windows, Novell NetWare, BeOS. Основными достоинствами Apache считаются надёжность и гибкость конфигурации. Он позволяет подключать внешние модули для предоставления данных, использовать СУБД для аутентификации пользователей, модифицировать сообщения об ошибках и т. д. Поддерживает IPv6.

фотохостинг комментирование пользователь браузер

2. Аналитическая часть

Рассмотрим сайты аналоги:

Flickr (http://www.flickr.com) — сервис, предназначенный для хранения и дальнейшего использования пользователем цифровых фотографий и видеороликов. Является одним из первых Web 2.0 сервисов. Один из самых популярных сайтов среди блогеров для размещения фотографий.

Недостатки:

1. Для загрузки большего количества изображения нужно платить деньги.

2. Загрузка изображений в высоком разрешение требует денег.

3. Перегруженный дизайн.

Рис. 1. Сайт http://www.flickr.com

FirePic (http://firepic.org/) — бесплатный фотохостинг без регистрации для публикации фотографий, картинок и других изображений на форумах, в чатах, блогах и других сайтах сети Интернет. При помощи FirePic вы можете поделиться интересной картинкой или вашей новой фотографией с друзьями и собеседниками.

Недостатки:

1. Малый объем загружаемого изображения.

2. Отсутствие комментариев.

3. Отсутствие рейтинга.

Рис. 2. Сайт http://firepic.org/

Vfl (http://vfl.ru/) — это бесплатный фотохостинг без регистрации.

Недостатки:

1. Отсутствие комментариев.

2. Ограничение на объем загружаемых изображений.

3. Удаление изображений в случае не активности Рис. 3. Сайт http://vfl.ru

3. Конструкторская часть

Для разработки данного курсового проекта использовался текстовый редактор Sublime Text 2.

Сайт состоит из следующих элементов:

· index.php - начальная страница сайта

· add_album.php — файл для создания нового альбома

· connect_DB.php — файл подключения к базе данных

· registration.php — файл для регистрации новых пользователей

· code.php — файл с основными функциями сайта

· album.php — файл для отображения альбома

· pwd_change.php — файл для смены пароля у пользователей

· image.php — файл для отображения изображения

· upload.php — файл для загрузки изображения на сервер

· rating.php — файл для вычисления рейтинга изображения

· userprofile.php — файл для отображения профиля пользователя

· style.css — стилевой файл оформления

· js — папка для хранения скриптов В начале разработки сайта были созданы основные таблицы базы данных MySQL:

1. Таблица пользователей:

CREATE TABLE users (id INT (10) NOT NULL AUTO_INCREMENT PRIMARY KEY,

login VARCHAR (20),

pwd VARCHAR (20),

email VARCHAR (20),

firstName VARCHAR (20) NULL,

lastName VARCHAR (20) NULL,

skype VARCHAR (20) NULL,

login_hash VARCHAR (64),

status VARCHAR (10)) DEFAULT `user';

2. Таблица альбомов:

CREATE TABLE albums (id INT (10) NOT NULL AUTO_INCREMENT PRIMARY KEY,

id_user INT (10),

name VARCHAR (30),

discrip VARCHAR (30));

3. Таблица изображений:

CREATE TABLE photo (id INT (10) NOT NULL AUTO_INCREMENT PRIMARY KEY,

id_album INT (10),

path VARCHAR (60)NOT NULL,

name VARCHAR (60) NOT NULL,

rating INT (10) DEFAULT 0);

4. Таблица комментариев:

CREATE TABLE comments AUTO_INCREMENT PRIMARY KEY,

id_user INT (10),

id_img INT (10),

comment TEXT);

Первой возможность сайта была реализован регистрация пользователей. Форма регистрации состоит из 4 полей: Username, Password, Confirm, Email.

" >

Обработка формы осуществляется в файле registration.php. Если запросы от формы не пустые, то идет обработка введённой информации с помощью функции clearData для безопасности:

function clearData ($data) {

$data = trim (strip_tags ($data));

return $data;}

Если все поля соответсвуют требованиям они вносятся в таблицу users:

$sql = «INSERT INTO users (login, pwd, email, login_hash) VALUES ('$l', '$p', '$e', '$lh')» ;mysql_query ($sql) or die (mysql_error ());

Если регистрация прошла успешно, то данные о пользователе сохраняются в сессии, и происходит перенаправление на главную страницу сайта уже под только что зарегистрированным пользователем:

$_SESSION[" login" ] = $login;

$_SESSION[" id" ] = $user_result[" id" ];

$_SESSION[" status" ] = $user_result[" status" ];

header («Location: index. php»);

exit ();

Окно логина состоит из двух полей Username и Password так же имеется checkbox Remember me (сохранение пользователя в «куках»). Если введены данные происходит запрос на существование такого пользователя и проверка правильности введённого пароля:

$query = mysql_query («SELECT id, pwd, status FROM users WHERE login = '$login'»);

$user_result = mysql_fetch_array ($query, MYSQL_ASSOC);

$pwd = $user_result[" pwd" ];

if ($user_result[" pwd" ] ≠ $_POST[" pwd" ]){$error_msg = «Invalid password» ;}

При совпадение пароля происходит входит пользователя, данные сохраняются в сессии, а если был выбран пункт Remember me то и в «куках»:

$_SESSION[" login" ] = $login;

$_SESSION[" id" ] = $user_result[" id" ];

$_SESSION[" status" ] = $user_result[" status" ];

if (isset ($_REQUEST[" rememberUser" ])){

$login_hash = md5($login);

setcookie («login», $login_hash.$key, time ()+3600);}

header («Location: index. php»);

exit ();

При загрузке изображения на сервер происходит проверка на формат данных:

function cheackeType ($type)

{$flag = false;

switch ($type) {case 'image/bmp':$flag = true;break;

case 'image/jpeg':$flag = true;break;

case 'image/gif':$flag = true; break;

case 'image/png': $flag = true; break;

default: $flag = false; break;}

return $flag;}

Если данная функция возвращает True то происходит загрузка изображения в папку upload на сервере:

$uploadfile = $uploaddir.basename ($_FILES['img']['name']);

$pathFile = «./upload/» .basename ($_FILES['img']['name']);

if (cheackeType ($_FILES[" img" ][" type" ]) and! empty ($_FILES[" img" ][" name" ]))

{if (copy ($_FILES[" img" ][" tmp_name" ], $uploadfile))

echo «OK»; }

Если пользователь вошел на сайт под своей учетной записью, то у него появляется возможность добавления альбомов. Для этого надо заполнить поля формы:

td>

За обработку данной формы служит эта часть когда:

if (!empty ($_POST[" nameAlbum" ])){

$id_user = $_SESSION[" id" ];

$nameAlbum = $_POST[" nameAlbum" ];

$discrip = $_POST[" description" ];

if (checkAlbum ($_POST[" nameAlbum" ])){

$album_query = «INSERT INTO albums (id_user, name, discrip)

VALUES ('$id_user', '$nameAlbum',

'$discrip')" ;

mysql_query ($album_query) or die (mysql_error ());

}else die («Error»);}

Для возможности перелистывания изображений в альбоме создается переменная количества изображений в данном альбоме:

$count_result = mysql_query («SELECT COUNT (*) FROM photo

WHERE id_album = '$img[id_album]'");

$count_photo = mysql_fetch_array ($count_result);

$count = $count_photo[0];

И переменная, отвечающая за позицию открытого изображения в альбоме:

$pos_result = mysql_query («SELECT COUNT (*) FROM photo

WHERE id_album = '$img[id_album]' andid < '$id_img'");

$pos_arr = mysql_fetch_array ($pos_result);

$pos = $pos_arr[0];

Высчитывается id следующего и предыдущего изображения:

$nxt_pht_result = mysql_query («SELECT id FROM photo

WHERE id_album = '$img[id_album]' LIMIT $next, 1″);

$next_pht_query = mysql_fetch_assoc ($nxt_pht_result);

$next_photo = $next_pht_query[" id" ];

$prv_pht_result = mysql_query («SELECT id FROM photo

WHERE id_album = '$img[id_album]' LIMIT $prev, 1″);

$prv_pht_query = mysql_fetch_assoc ($prv_pht_result);

$previos_photo = $prv_pht_query[" id" ];

Под изображениями в альбоме находится форма для отправки комментария. После ее отправки текст сообщения и id пользователя заносится в таблицу comments:

if (!empty ($_POST[" comment" ])){

$comment = clearData ($_POST[" comment" ]);

$add_comment = mysql_query («INSERT INTO comments (comment, id_user, id_img)

VALUES ('$comment', '$_SESSION[id]', '$id_img')");

header («Location: image. php?id=$id_img»);}

Для вывода комментариев сначала выполняется запрос к таблице comments где происходит выбор всех комментариев к этому изображению в порядке убывания id:

$comments_result = mysql_query («SELECT id, id_user, id_img, comment

FROM comments WHERE id_img = '$_GET[id]' ORDER BY id DESC");

Для вывода комментариев используется цикл while:

while ($commentList = mysql_fetch_assoc ($comments_result)) {

$login_comment_result = mysql_query («SELECT login FROM usersWHERE id = '$commentList[id_user]'»);$login_comment = mysql_fetch_assoc ($login_comment_result);?>

Показать весь текст
Заполнить форму текущей работой