Создание сайта 'Музыкальный каталог'

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    791,85 Кб
  • Опубликовано:
    2013-11-22
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Создание сайта 'Музыкальный каталог'

Содержание

 

Аннотация

Реферат

Содержание

Введение

Загрузка музыки на сервер

Регистрация и авторизация пользователей.

Каталог музыки. Поиск

Заключение

Список Литературы

Приложение А

Приложение Б

 

Введение


Была поставлена задача по созданию веб-сайта Музыкальный каталог с использованием PHP и баз данных MySQL. Реализовать регистрацию и авторизацию пользователя. Сделать возможность в зависимости от авторизации пользователя, давать доступ к скачиванию композиций с сайта.

Конечно, с первого взгляда всё это выглядело просто, однако на деле пришлось «покрутить» чтобы организовать ту или иную функцию правильно. Приходилось общие функции выносить в отдельные файлы для удобства, что позволяло в местах, где нужны те или иные функции не писать их заново, а просто подключить файл, который и хранил требуемую.

Программируя сразу пошёл немного дальше, и вне зависимости от задачи по дизайну, сделал небольшой шаблонизатор, т.е если кто-то бы захотел прикрутить другой шаблон к моему каталогу музыки, человеку главное было бы знать определённые переменные и за что они отвечают пример таких переменных : %LICENSE% - данная переменная вставляет копирайт на сайт, %MODULE% - главный блок модуля и другие.

Так же была поставлена задача по «спрятыванию» прямой ссылки для скачки пользователем. Этого конечно было добиться не так просто, но всё же удалось, вначале использовался хэш файла при загрузке, однако, проанализировав большинство музыкальных сайтов в интернете, обратил внимание, что они не прячут названия файлов, вследствие чего и я отказался от этого, и выдаю реальное название файла, конечно предварительно запретив махинации напрямую.

Более подробно о функциях, использованных в процессе, опишу далее.

 

Загрузка музыки на сервер


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

Сама форма загрузки и ввода информации организована через метод POST. Имея музыкальный файл и файл для ковера (изображение альбома, просто изображение сопровождающее музыкальную композицию), возникает потребность на проверку расширения файлов, а так же размер данных файлов. Для расширений музыкальных файлов, были выбраны самые популярные: "mp3","wav","ogg".

Для расширений файлов ковера, так же были использованы самые популярные форматы: "gif","tpl","jpg","jpeg","png".

Каждый файл имеет ограничение по размеру, и если пользователь превысит его, то ему выскачет сообщение с ошибкой, где и будет написано что размер большой.

С файлами изображений пришлось ещё и дополнительно позаниматься, т.к если пользователь загрузит изображение размером например 1024х768 то естественно в каталоге данное изображение будет огромным и разбивать шаблон. Для этого была написана функция по изменению размера изображения на уменьшенное. Участок кода, отвечающий за это, смотрите в приложении Б.

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

Регистрация и авторизация пользователей


При нажатии пользователем кнопки регистрации открывается соответствующее окно, где пользователь должен ввести данные: логин, пароль, подтверждение пароля, e-mail, а также согласие c правилами.

После ввода всех данных производится проверка на корректность введённых данных. Если все данные верны, то они заносятся в базу данных и устанавливаются куки для этого пользователя.

Если регистрация прошла неудачно, то пользователь получает сообщение с ошибкой.

Если пользователь уже авторизован на сайте, регистрация ему будет недоступна и ему выдаст соответствующее сообщение.

При нажатии на кнопку авторизации пользователю открывается окно для введения логина и пароля. После нажатия на кнопку вход проходит проверка данных из базы с данными, которые ввёл пользователь. Если такой пользователь существует и пароль верен, то данные заносятся в куки, устанавливается время их хранение и пользователь становится авторизованным.

Если пользователь уже авторизован, либо такого пользователя нет в базе данных, либо пароль не верен, то пользователь видит соответствующее сообщение.

Коды работы авторизации и регистрации пользователя приведены в приложении Б.

музыка сервер ссылка пользователь

Каталог музыки. Поиск


При нажатии на кнопку открытия каталога пользователь видит перед собой поисковую строку, а ниже сам каталог музыки, который занесён в базу данных. Если в базе данных музыки не будет, пользователь увидит надпись, что каталог пуст. (смотрите приложение А)

Поисковая система работает по трём критериям: название песни, год издания, жанр песни. Если пользователь вводит один из данных критериев, то система начинает поиск и выдаёт все песни подходящие под заданное условие. Участок кода, отвечающий за поиск, смотрите в приложении Б. Скриншот расположения смотрите в приложении А.

Ниже поиска располагается сам каталог. Каталог имеет: название песни, дату добавления, изображение альбома (ковер), описание, ссылку на скачивание (видна если пользователь авторизован, иначе направляет на форму авторизации), год издания композиции.

Вся информация для каталога музыки берётся из базы данных. Если изображение альбома не загружено, то выводится специальное изображение (смотрите приложение А). Если пользователь не ввёл описание композиции, то выводится, что описание отсутствует.

Заключение

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

Исследовав ни один каталог музыки, пришёл к выводу, что использование таких ограничений больше отталкивает пользователя, однако если у вас хороший каталог музыки, который содержит много композиций, которые нельзя скачать где-либо в другом месте, пользователь зарегистрируется и скачает.

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

Список Литературы

Печатные источники:

1. Робин Никсон, Создаем динамические веб-сайты с помощью PHP, MySQL и JavaScript.

Интернет источники:

.php.su

.cyberforum.ru

. habrahabr.ru

Приложение А


Главное окно:


Форма входа:


Форма регистрации:

Форма добавления файлов:


Каталог файлов. Поиск:

Приложение Б

Функция img_resize():

генерация thumbnails

Параметры:

$src - имя исходного файла

$dest - имя генерируемого файла

$width, $height - ширина и высота генерируемого изображения, в пикселях

Необязательные параметры:

$rgb - цвет фона, по умолчанию - белый

$quality - качество генерируемого JPEG, по умолчанию - максимальное (100)

*************************************************************/img_resize($src, $dest, $width, $height, $rgb=0xFFFFFF, $quality=95)

{(!file_exists($src)) return false;

$size = getimagesize($src);

if ($size === false) return false;

// Определяем исходный формат по MIME-информации, предоставленной

// функцией getimagesize, и выбираем соответствующую формату

// imagecreatefrom-функцию.

$format = strtolower(substr($size['mime'], strpos($size['mime'], '/')+1));

$icfunc = "imagecreatefrom" . $format;(!function_exists($icfunc)) return false;

$x_ratio = $width / $size[0];

$y_ratio = $height / $size[1];

$ratio = min($x_ratio, $y_ratio);

$use_x_ratio = ($x_ratio == $ratio);

$new_width = $use_x_ratio ? $width : floor($size[0] * $ratio);

$new_height = !$use_x_ratio ? $height : floor($size[1] * $ratio);

$new_left = $use_x_ratio ? 0 : floor(($width - $new_width) / 2);

$new_top = !$use_x_ratio ? 0 : floor(($height - $new_height) / 2);

$isrc = $icfunc($src);

$new_width, $new_height, $size[0], $size[1]);($idest, $dest, $quality);($isrc);($idest);

return true;

}

?>

Регистрация пользователя:

<?_start();('lib/connect.php'); //подключаемся к БД('lib/function_global.php'); //подключаем библиотеку функций('lib/function_login.php'); //подключаем библиотеку функций"templates/templates.php";

$main = file_get_contents("templates/index.html");

//проверим, быть может пользователь уже авторизирован. Если это так, перенаправим его на главную страницу сайта

if($user) {str_replace(('%BLOCKS left%','%MODULE%','%LICENSE%','%caption%','%sitename%','%BLOCKS foot%','%exit%'),($leftpanel,$eroor_log_in2,$license,$module_name,$sitename,$foot,$button_exit),

$main

);();

}

{(isset($_POST['GO'])) //если была нажата кнопка регистрации, проверим данные на корректность и, если данные введены и введены правильно, добавим запись с новым пользователем в БД

{

$correct = registrationCorrect(); //записываем в переменную результат работы функции registrationCorrect(), которая возвращает true, если введённые данные верны и false в противном случае($correct) //если данные верны, запишем их в базу данных

{

$login = htmlspecialchars($_POST['login']);

$password = $_POST['password'];

$mail = htmlspecialchars($_POST['mail']);

$salt = mt_rand(100, 999);

$tm = time();

$password = md5($password);(mysql_query("INSERT INTO users (login,password,salt,mail_reg,mail,reg_date,last_act) VALUES ('".$login."','".$password."','".$salt."','".$mail."','".$mail."','".$tm."','".$tm."')")) //пишем данные в БД и авторизовываем пользователя

{("login", $login, time() + 50000, '/');("password", md5($login.$password), time() + 50000, '/');

$rez = mysql_query("SELECT * FROM users WHERE login=".$login);

@$row = mysql_fetch_assoc($rez);

$_SESSION['id'] = $row['id'];

$regged = true;str_replace(('%BLOCKS left%','%MODULE%','%LICENSE%','%caption%','%sitename%','%BLOCKS foot%','%exit%'),($leftpanel,$register_success,$license,$module_name,$sitename,$foot,$button_no_exit),

$main

); //подключаем шаблон

}

}

{str_replace(('%BLOCKS left%','%MODULE%','%LICENSE%','%caption%','%sitename%','%BLOCKS foot%','%exit%'),($leftpanel,$register2,$license,$module_name,$sitename,$foot,$button_no_exit),

$main

); //подключаем шаблон в случае некорректности данных

}

}

{str_replace(('%BLOCKS left%','%MODULE%','%LICENSE%','%caption%','%sitename%','%BLOCKS foot%','%exit%'),($leftpanel,$register,$license,$module_name,$sitename,$foot,$button_no_exit),

$main

); //подключаем шаблон в случае если кнопка регистрации нажата не была, то есть, пользователь только перешёл на страницу регистрации

}

}

?>

Авторизация пользователя:

<?('lib/connect.php'); //подключаемся к БД('lib/function_login.php'); //подключаем библиотеку функций"templates/templates.php";

$main = file_get_contents("templates/index.html");

// если да, перенаправляем его на главную страницу

if($user) {str_replace(('%BLOCKS left%','%MODULE%','%LICENSE%','%caption%','%sitename%','%BLOCKS foot%','%exit%'),($leftpanel,$eroor_log_in,$license,$module_name,$sitename,$foot,$button_exit),

$main

);();

}

if(!empty($_POST['login']) AND !empty($_POST['password']))

{

// фильтрируем логин и пароль

$login = mysql_real_escape_string(htmlspecialchars($_POST['login']));

$password = mysql_real_escape_string(htmlspecialchars($_POST['password']));

$search_user = mysql_result(mysql_query("SELECT COUNT(*) FROM `users` WHERE `login` = '".$login."' AND `password` = '".md5($password)."'"), 0);($search_user == 0)

{str_replace(('%BLOCKS left%','%MODULE%','%LICENSE%','%caption%','%sitename%','%BLOCKS foot%','%exit%'),($leftpanel,$no_login,$license,$module_name,$sitename,$foot,$button_no_exit),

$main

);();

}

{

// заносим логин и пароль в куки

$time = 60*60*24; // сколько времени хранить данные в куках

setcookie('username', $login, time()+$time, '/');('password', md5($password), time()+$time, '/');

$user_login=$login;

$login=''.$loginu.''.$user_login.'';str_replace(('%BLOCKS left%','%MODULE%','%LICENSE%','%caption%','%sitename%','%BLOCKS foot%','%exit%'),($leftpanel,$login,$license,$module_name,$sitename,$foot,$button_exit),

$main

);();

}

}str_replace(('%BLOCKS left%','%MODULE%','%LICENSE%','%caption%','%sitename%','%BLOCKS foot%','%exit%'),($leftpanel,$login,$license,$module_name,$sitename,$foot,$button_no_exit),

);

?>

Поиск:

if($_POST['search_word']) $search = $_POST['search_word'];

$search = strip_tags($search);

$search = trim($search);

$search = htmlspecialchars($search);(get_magic_quotes_gpc()) $search = mysql_escape_string($search);$search = str_replace("'","`",$search);

$query = mysql_query("SELECT * FROM ".$dbpf."_menu WHERE name LIKE '%". $search. "%' OR year LIKE '%".$search."%' OR janr = '".$search."' OR opis = '".$search."'");

Похожие работы на - Создание сайта 'Музыкальный каталог'

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!