Создание сайта "Музыкальный каталог"
Загрузка музыки на сервер. Регистрация и авторизация пользователей. Участок кода, отвечающий за поиск. "Спрятывание" прямой ссылки для скачки пользователем. Форма загрузки и ввода информации. Проверка расширения файлов. Изменение размера изображения.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 22.11.2013 |
Размер файла | 2,4 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Содержание
Аннотация
Реферат
Содержание
Введение
Загрузка музыки на сервер
Регистрация и авторизация пользователей.
Каталог музыки. Поиск
Заключение
Список Литературы
Приложение А
Приложение Б
Введение
Была поставлена задача по созданию веб-сайта Музыкальный каталог с использованием PHP и баз данных MySQL. Реализовать регистрацию и авторизацию пользователя. Сделать возможность в зависимости от авторизации пользователя, давать доступ к скачиванию композиций с сайта.
Конечно, с первого взгляда всё это выглядело просто, однако на деле пришлось «покрутить» чтобы организовать ту или иную функцию правильно. Приходилось общие функции выносить в отдельные файлы для удобства, что позволяло в местах, где нужны те или иные функции не писать их заново, а просто подключить файл, который и хранил требуемую.
Программируя сразу пошёл немного дальше, и вне зависимости от задачи по дизайну, сделал небольшой шаблонизатор, т.е если кто-то бы захотел прикрутить другой шаблон к моему каталогу музыки, человеку главное было бы знать определённые переменные и за что они отвечают пример таких переменных : %LICENSE% - данная переменная вставляет копирайт на сайт, %MODULE% - главный блок модуля и другие.
Так же была поставлена задача по «спрятыванию» прямой ссылки для скачки пользователем. Этого конечно было добиться не так просто, но всё же удалось, вначале использовался хэш файла при загрузке, однако, проанализировав большинство музыкальных сайтов в интернете, обратил внимание, что они не прячут названия файлов, вследствие чего и я отказался от этого, и выдаю реальное название файла, конечно предварительно запретив махинации напрямую.
Более подробно о функциях, использованных в процессе, опишу далее.
Загрузка музыки на сервер
Конечно, каждый каталог музыки должен иметь возможность загрузки пользователем музыки. Потому, данная функция была написана в первую очередь. На мой взгляд, это самая сложная и трудоёмкая функция из всех, что представлены на сайте.
Сама форма загрузки и ввода информации организована через метод POST. Имея музыкальный файл и файл для ковера (изображение альбома, просто изображение сопровождающее музыкальную композицию), возникает потребность на проверку расширения файлов, а так же размер данных файлов. Для расширений музыкальных файлов, были выбраны самые популярные: "mp3","wav","ogg".
Для расширений файлов ковера, так же были использованы самые популярные форматы: "gif","tpl","jpg","jpeg","png".
Каждый файл имеет ограничение по размеру, и если пользователь превысит его, то ему выскачет сообщение с ошибкой, где и будет написано что размер большой.
С файлами изображений пришлось ещё и дополнительно позаниматься, т.к если пользователь загрузит изображение размером например 1024х768 то естественно в каталоге данное изображение будет огромным и разбивать шаблон. Для этого была написана функция по изменению размера изображения на уменьшенное. Участок кода, отвечающий за это, смотрите в приложении Б.
Если пользователь не заполнил какое-либо из обязательных полей, ему выдаётся сообщение об этом. После заполнения всех полей правильно и нажатии на кнопку загрузить музыка и его ковер, если он есть, помещаются в каталог, который хранит всё это, а данные заносятся в базу данных впоследствии оттуда они и будут браться для выдачи ссылок. Смотрите приложение А.
Регистрация и авторизация пользователей
При нажатии пользователем кнопки регистрации открывается соответствующее окно, где пользователь должен ввести данные: логин, пароль, подтверждение пароля, e-mail, а также согласие c правилами.
После ввода всех данных производится проверка на корректность введённых данных. Если все данные верны, то они заносятся в базу данных и устанавливаются куки для этого пользователя.
Если регистрация прошла неудачно, то пользователь получает сообщение с ошибкой.
Если пользователь уже авторизован на сайте, регистрация ему будет недоступна и ему выдаст соответствующее сообщение.
При нажатии на кнопку авторизации пользователю открывается окно для введения логина и пароля. После нажатия на кнопку вход проходит проверка данных из базы с данными, которые ввёл пользователь. Если такой пользователь существует и пароль верен, то данные заносятся в куки, устанавливается время их хранение и пользователь становится авторизованным.
Если пользователь уже авторизован, либо такого пользователя нет в базе данных, либо пароль не верен, то пользователь видит соответствующее сообщение.
Коды работы авторизации и регистрации пользователя приведены в приложении Б.
музыка сервер ссылка пользователь
Каталог музыки. Поиск
При нажатии на кнопку открытия каталога пользователь видит перед собой поисковую строку, а ниже сам каталог музыки, который занесён в базу данных. Если в базе данных музыки не будет, пользователь увидит надпись, что каталог пуст. (смотрите приложение А)
Поисковая система работает по трём критериям: название песни, год издания, жанр песни. Если пользователь вводит один из данных критериев, то система начинает поиск и выдаёт все песни подходящие под заданное условие. Участок кода, отвечающий за поиск, смотрите в приложении Б. Скриншот расположения смотрите в приложении А.
Ниже поиска располагается сам каталог. Каталог имеет: название песни, дату добавления, изображение альбома (ковер), описание, ссылку на скачивание (видна если пользователь авторизован, иначе направляет на форму авторизации), год издания композиции.
Вся информация для каталога музыки берётся из базы данных. Если изображение альбома не загружено, то выводится специальное изображение (смотрите приложение А). Если пользователь не ввёл описание композиции, то выводится, что описание отсутствует.
Заключение
В заключении хотелось бы сказать, что в наше время каталоги музыки очень востребованы, однако почти вся музыка есть в социальных сетях, и многие базируют свои каталоги именно на них, давая возможность качать музыку. Большинство каталогов не имеет никаких ограничений таких как: регистрация, запрет на скачку, если не авторизован. Однако ввиду задания пришлось организовать данное ограничение.
Исследовав ни один каталог музыки, пришёл к выводу, что использование таких ограничений больше отталкивает пользователя, однако если у вас хороший каталог музыки, который содержит много композиций, которые нельзя скачать где-либо в другом месте, пользователь зарегистрируется и скачает.
Программируя столкнулся с множеством проблем, по организации действий, однако нашлись компромиссные решения, которые в дальнейшем были очень кстати. Была организована система отдельных функций в общем файле, что позволило использовать их, когда было необходимо, простым включением файла, а не написанием функции заново.
Список Литературы
Печатные источники:
1. Робин Никсон, Создаем динамические веб-сайты с помощью PHP, MySQL и JavaScript.
Интернет источники:
1.php.su
2.cyberforum.ru
3. habrahabr.ru
Приложение А
Главное окно:
Форма входа:
Форма регистрации:
Форма добавления файлов:
Каталог файлов. Поиск:
Приложение Б
Функция img_resize():
генерация thumbnails
Параметры:
$src - имя исходного файла
$dest - имя генерируемого файла
$width, $height - ширина и высота генерируемого изображения, в пикселях
Необязательные параметры:
$rgb - цвет фона, по умолчанию - белый
$quality - качество генерируемого JPEG, по умолчанию - максимальное (100)
*************************************************************/
function img_resize($src, $dest, $width, $height, $rgb=0xFFFFFF, $quality=95)
{
if (!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;
if (!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);
$idest = imagecreatetruecolor($width, $height);
imagefill($idest, 0, 0, $rgb);
imagecopyresampled($idest, $isrc, $new_left, $new_top, 0, 0,
$new_width, $new_height, $size[0], $size[1]);
imagejpeg($idest, $dest, $quality);
imagedestroy($isrc);
imagedestroy($idest);
return true;
}
?>
Регистрация пользователя:
<?
session_start();
include ('lib/connect.php'); //подключаемся к БД
include ('lib/function_global.php'); //подключаем библиотеку функций
include ('lib/function_login.php'); //подключаем библиотеку функций
include "templates/templates.php";
$main = file_get_contents("templates/index.html");
//проверим, быть может пользователь уже авторизирован. Если это так, перенаправим его на главную страницу сайта
if($user) {
echo str_replace(
array('%BLOCKS left%','%MODULE%','%LICENSE%','%caption%','%sitename%','%BLOCKS foot%','%exit%'),
array($leftpanel,$eroor_log_in2,$license,$module_name,$sitename,$foot,$button_exit),
$main
);
exit();
}
else
{
if (isset($_POST['GO'])) //если была нажата кнопка регистрации, проверим данные на корректность и, если данные введены и введены правильно, добавим запись с новым пользователем в БД
{
$correct = registrationCorrect(); //записываем в переменную результат работы функции registrationCorrect(), которая возвращает true, если введённые данные верны и false в противном случае
if ($correct) //если данные верны, запишем их в базу данных
{
$login = htmlspecialchars($_POST['login']);
$password = $_POST['password'];
$mail = htmlspecialchars($_POST['mail']);
$salt = mt_rand(100, 999);
$tm = time();
$password = md5($password);
if (mysql_query("INSERT INTO users (login,password,salt,mail_reg,mail,reg_date,last_act) VALUES ('".$login."','".$password."','".$salt."','".$mail."','".$mail."','".$tm."','".$tm."')")) //пишем данные в БД и авторизовываем пользователя
{
setcookie ("login", $login, time() + 50000, '/');
setcookie ("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;
echo str_replace(
array('%BLOCKS left%','%MODULE%','%LICENSE%','%caption%','%sitename%','%BLOCKS foot%','%exit%'),
array($leftpanel,$register_success,$license,$module_name,$sitename,$foot,$button_no_exit),
$main
); //подключаем шаблон
}
}
else
{
echo str_replace(
array('%BLOCKS left%','%MODULE%','%LICENSE%','%caption%','%sitename%','%BLOCKS foot%','%exit%'),
array($leftpanel,$register2,$license,$module_name,$sitename,$foot,$button_no_exit),
$main
); //подключаем шаблон в случае некорректности данных
}
}
else
{
echo str_replace(
array('%BLOCKS left%','%MODULE%','%LICENSE%','%caption%','%sitename%','%BLOCKS foot%','%exit%'),
array($leftpanel,$register,$license,$module_name,$sitename,$foot,$button_no_exit),
$main
); //подключаем шаблон в случае если кнопка регистрации нажата не была, то есть, пользователь только перешёл на страницу регистрации
}
}
?>
Авторизация пользователя:
<?
include ('lib/connect.php'); //подключаемся к БД
include ('lib/function_login.php'); //подключаем библиотеку функций
include "templates/templates.php";
$main = file_get_contents("templates/index.html");
// если да, перенаправляем его на главную страницу
if($user) {
echo str_replace(
array('%BLOCKS left%','%MODULE%','%LICENSE%','%caption%','%sitename%','%BLOCKS foot%','%exit%'),
array($leftpanel,$eroor_log_in,$license,$module_name,$sitename,$foot,$button_exit),
$main
);
exit();
}
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);
if($search_user == 0)
{
echo str_replace(
array('%BLOCKS left%','%MODULE%','%LICENSE%','%caption%','%sitename%','%BLOCKS foot%','%exit%'),
array($leftpanel,$no_login,$license,$module_name,$sitename,$foot,$button_no_exit),
$main
);
exit();
}
else
{
// заносим логин и пароль в куки
$time = 60*60*24; // сколько времени хранить данные в куках
setcookie('username', $login, time()+$time, '/');
setcookie('password', md5($password), time()+$time, '/');
$user_login=$login;
$login=''.$loginu.''.$user_login.'';
echo str_replace(
array('%BLOCKS left%','%MODULE%','%LICENSE%','%caption%','%sitename%','%BLOCKS foot%','%exit%'),
array($leftpanel,$login,$license,$module_name,$sitename,$foot,$button_exit),
$main
);
exit();
}
}
echo str_replace(
array('%BLOCKS left%','%MODULE%','%LICENSE%','%caption%','%sitename%','%BLOCKS foot%','%exit%'),
array($leftpanel,$login,$license,$module_name,$sitename,$foot,$button_no_exit),
$main
);
?>
Поиск:
if($_POST['search_word']) $search = $_POST['search_word'];
$search = strip_tags($search);
$search = trim($search);
$search = htmlspecialchars($search);
if (get_magic_quotes_gpc()) $search = mysql_escape_string($search);
else $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."'");
Размещено на Allbest.ru
Подобные документы
Обоснование выбора средств разработки. Алгоритм загрузки изображения на сервер. Модуль авторизации в административной панели сайта. Хранение данных в базе данных. Работа с локальными и удалёнными файлами. Тестирование работы программного средства.
курсовая работа [1,3 M], добавлен 18.04.2018Основные принципы выбора имени и адреса для сайта. Организационные зоны высшего уровня. Региональные зоны (домены стран). Выбор хостинг-провайдера. Скорость загрузки страниц. Время ответа сервера. Перенос файлов сайта с локального компьютера на сервер.
реферат [18,3 K], добавлен 23.05.2014Основные принципы создания сайта: написание HTML-кода страниц в блокноте, сохранение текстовой информации с расширением .htm. Размещение сайта на ресурсах хостинг-провайдеров с помощью Total Commander. Поиск информации в сети Интернет. Работа с Google.
отчет по практике [6,8 M], добавлен 08.09.2013Проверка существования и статуса файла. Определение его размера. Открытие файла для чтения, записи, добавления. Закрытие файловых дескрипторов. Запись из переменной в файл. Загрузка файла из сети. Создание и удаление каталога. Функции работы с каталогами.
презентация [133,9 K], добавлен 21.06.2014Информация о графических форматах. Хранение изображения в программе. Очередь как вспомогательная структура данных. Загрузка изображения из двоичного файла. Операции с изображением. Уменьшение разрешающей способности. Увеличение размера изображения.
курсовая работа [1,1 M], добавлен 29.06.2013Понятие и особенности развития технологии on-line бронирования в России, общие функциональные возможности данных систем, их типы, преимущества и недостатки. Регистрация и авторизация пользователей. Поиск и бронирование отелей, этапы и закономерности.
контрольная работа [34,6 K], добавлен 28.06.2014Проектирование сайта учителя в системе Ucoz с учетом особенностей педагогической деятельности. Обновление и пополнение содержимого сайта. Регистрация пользователей. Настройка дизайна и выбор модулей для сайта. Создание меню и наполнение сайта контентом.
курсовая работа [2,1 M], добавлен 14.06.2014Сайтостроение. Классификация сайтов. CMS, выбор системы управления контентом для сайта. Регистрация домена, хостинг, размещение сайта в сети. VPS или виртуальный выделенный сервер. Поисковая оптимизация сайта. Файл robots.txt. Карта сайта sitemap.xml.
курсовая работа [139,4 K], добавлен 18.02.2015Проектирование макета сайта магазина детской одежды: функции каждого элемента страницы, меню, каталог, авторизация, поиск. Классы и модули, их использование в созданном WEB-приложении. Структура базы данных и описание таблиц с существующими полями.
курсовая работа [3,8 M], добавлен 11.05.2015Создание обучающей презентации о создании сайта в программе для конструирования сайтов "Joomla". Установка локального сервера "Denwer" и программы "Joomla". Создание меню, загрузка изображений. Смена шаблона, работа с текстом в программе MS PowerPoint.
дипломная работа [3,8 M], добавлен 04.03.2013