Московский Государственный Технический Университет
им. Н.Э. Баумана
Калужский филиал
Кафедра ЭИУ5-КФ
Системы Автоматизированного Проектирования
Курсовая работа на тему:
«Файлообменник с веб-интерфейсом»
Калуга, 2007
Содержание
Введение
Исследовательская часть
Инструменты построения страниц
Языки веб-программирования
Методы общения клиента и сервера
Базы данных.
Веб-сервер
Редакторы кода
Инструкция программиста.
Системные требования
Инструкция по установке
Структура проекта
Описание исходных кодов
Инструкция пользователя.
Заключение.
Список литературы.
Введение
В курсовойработе была поставлена задача создания файлообменника с веб-интерфейсом, спомощью которого пользователи могут обмениваться файлами в сети.
Цель работы:показать знание языка веб-программирования PHP, а также средств HTML, CSS ибазы данных MySQL.
Основныефункции сайта: загрузка, изменение, удаление файлов с сайта (черезвеб-интерфейс), отображение загруженных файлов в удобном виде, контролируемое скачиваниезагруженных файлов. Курсовой проект представляет собой сайт, готовый квыкладыванию на подходящем хостинге. Для создания курсового проектаиспользовался текстовый редактор EditPlus.Актуальность поставленной задачи
При появлении интернетау людей возникло множество проблем. Одна из таких проблем – обмен файлами всети. Именно ей я и решил заняться.
Для обменафайла между пользователями по сети существует несколько способов. Во-первых,e-mail (почта). Для пересылки файлов по почте необходимо знать ящик человека,которому отправляется письмо, при этом размер пересылаемых файлов увеличиваетсяна 37%. Это не всегда удобно. Во-вторых, можно пересылать файлы при помощисервиса ICQ. Это опять же не удобно, т.к. требуется регистрация обоихпользователей в системе и наличие у них клиентов, поддерживающих передачуфайлов. Кроме того, при помощи первых 2х способов передать файлы можно лишьограниченному числу людей.
Если жетребуется передать файл большему числу людей, используют:
1. FTP (FileTransfer Protocol). Для этого необходим FTP-сервер
2. Веб-сайт.Для этого требуется хостинг, не у всех он есть.
3.Файлообменник. Самый доступный способ массового распространения файлов.Файлообменники призваны решить нарастающую потребность в обмене файлами длятех, кто по тем или иным причинам не хочет использовать предыдущие способы.Структура пояснительной записки
Пояснительнаязаписка состоит из вступления, трёх глав и заключения.
Глава 1 –исследовательская часть, которая содержит целесообразность выбора инструментовпостроения веб-страниц, языка веб-программирования, среды разработки.
Глава 2 –инструкция программиста, в состав которой входят системные требования,инструкция по установке файлообменника, описание структуры проекта и подробноеописание методов.
Глава 3 –инструкция пользователя, которая содержит описание способов и приёмов работы сфайлообменником с точки зрения пользователя, модератора и администратора.
Исследовательскаячасть
Файлообменникпредназначен для размещения в интернете, поэтому он должен иметь вид сайта,состоящего из отдельных страниц. Для построения страниц сайта можноиспользовать различные инструменты. Инструменты построения страниц
Традиционно дляотображения содержимого сайтов используется HTML.Аббревиатура HTML расшифровывается как Hyper Text Markup Language – язык гипертекстовой разметки. То есть HTML – не язык программирования, а просто одно из средств длярисования страничек. Существует несколько спецификаций языка. В написании своейработы я придерживался наиболее распространённой в настоящее время спецификацииHTML 4.01 Transitional. Про этуспецификацию можно посмотреть на w3c.org
Для улучшениявнешнего вида HTML-страничек применяют CSS (Cascading Style Sheets) – листы стилей. Существует несколько спецификаций CSS. Разные браузеры поддерживают разные спецификации CSS.Браузеры CSS CSS2 CSS3 MSIE 6.0 SP2 + - - Opera 8.x + + - Konqueror + + + Gecko 1.8.x + + +
Я для работыиспользовал CSS2, т.к. его возможностей мне достаточнодля создания полноценных сайтов, а CSS3 пока чтоподдерживается не всеми браузерами.
Длятестирования сайта я использовал браузеры Опера 8.52 и MSIE.Сравнение характеристик браузеров – это отдельная тема, не буду заострять наней внимание. Теоретически курсовойпроект совместим и с другими браузерами.
Широкоиспользуются скрипты, написанные на JS (JavaScript) и VBS (Visual Basic Script) для выполнения некоторых простых действий наклиентском компьютере. Они помогают изменять информацию на странице (чащесвязанную с оформлением), не перезагружая страницу. Также иногда используюттехнологию ActiveX – чаще всего для тех же целей, что иJS. Встречаются и другие применения ActiveX– пример тому webmoney. Иногда создатели сайтов делаютиспользование многих наворотов обязательным (картинки, скрипты, ActiveX). Это мешает нормальному восприятию содержимогосайта. В своём проекте я счёл нецелесообразным применение таких скриптов.
С помощью такихсредств принято разрабатывать страницы сайтов. Но статические страницы,написанные с помощью этих средств, не позволяют осуществлять общение сайта ипосетителя. Это весьма удобно реализуется с помощью языковвеб-программирования. Языки веб-программирования
Разнообразие сайтовв сети практически невозможно сделать, используя лишь статические страницы. Чтобысделать информацию, отображаемую на сайте, более актуальной, интерактивной, ит.п. нужно динамически генерировать содержимое сайта, или хотя бы отдельных егостраниц. Для этого были придуманы серверные приложения (CGI)и скрипты, обрабатывающиеся определённым интерпретатором. Наиболеераспространены Perl, PHP и ASP.
На следующиеособенности следует обратить внимание при сравнении (достоинства отмечены «+»,недостатки «-»):
Perl
+ считаетсясамым быстрым языком
+ старейшийязык, следовательно, проверен временем, приёмы программирования давноотработаны и задокументированы.
— сложностьвывода HTML-кода
PHP (4)
+ простотаинтеграции с HTML и ему подобными форматами
+ простота восвоении новичком и исключительная масштабируемость
+ популярность– полно документации как официальной (php.net и книги) так и сторонних курсов и форумов
+ популярность– всегда можно получить помощь в решении любой проблемы
+- бесплатность– никаких гарантий и служб поддержки
— популярность– все дыры в программировании (новичков) известны
ASP
+ надёжность,
+ службаподдержки,
+ интеграция сплатформой .Net,
— строгаятипизация,
— платный продукт,
— требует Windows-хостинг.
После такогосравнения для изучения я выбрал язык PHP, из-за такихпреимуществ:
1. Наличие понятной и доступной документации
2. Простота в установке и настройке.
3. Поддержка самой популярной opensource БД – MySQL
4. Поддержка веб-сервера Apache
5. Свобода в выборе хостинга, т.к. подавляющее большинство хостинговиспользуют платформу FreeBSD+Apache+PHP+MySQL
Аббревиатура PHP сейчас расшифровывается как Hypertext Preprocessor. Подробнее про язык PHP написано на php.net
Но какпроисходит «общение» посетителя с сайтом? Для этого уже довольно давно былипридуманы действенные методы. Методы общения клиента и сервера
Для передачиданных от браузера клиента приложению или скрипту на сервере используются методыGET и POST протокола HTTP (HyperText Transfer Protocol),а также через куки (cookie), реферреры и другие данные,передаваемые браузером.
При передачеданных методом GET данные отображаются в адреснойстроке браузера, при использовании метода POST передаваемыеданные не видно. Также есть возможность загрузки файлов методом POST, однако для использования этого метода необходимосделать submit формы.
Куки – этопеременные, предлагаемые к установке браузеру. Правильный браузер должензапоминать куки и при каждом посещении страницы сайта отправлять веб-серверузначения этих переменных.
Реферрер – этоуказатель перехода. Реферреры придуманы для отслеживания перемещенияпользователей по сети. При нажатии на ссылку правильный браузер долженотправить (вместе с куками) адрес страницы, на которой находилась эта ссылка.
Также следуетотметить такой важный передаваемый параметр, как сигнатура браузера. По нейоднозначно определяется, кто зашёл на сайт.
Данным,переданным этими способами (HTTP GET/POST, cookie,referrers, user_agent) нельзя доверять.
Переданнуюинформацию нужно где-то хранить. Информацию можно сохранять разными способами.Наиболее распространены базы данных, т.к. многие операции они делают запрограммистов, облегчая им труд. Базы данных.
Средимногообразия баз данных я выбрал MySQL 4.0, и вотпочему. На их сайте читаем: «MySQL предлагает такуюкомбинацию производительности, цены и возможностей, которую вряд ли смогутпредложить другие».
Идействительно, основные достоинства MySQL – это:
1. Бесплатность(на 1 месте)
2. Небольшойразмер и дистрибутива, и установленной программы.
3. Простотаиспользования.
4. Скорость и стабильность.
5.Популярность.
Следуетдобавить, что возможности MySQL уже стали избыточнымидля большинства веб-приложений (да, такое часто происходит со многими хорошимипрограммами). Более того, новая версия 5.0, которая была объявлена стабильной вфеврале, несовместима с предыдущими версиями, и многие сайты сталинеработоспособными после обновления серверов. Для работы моего сайта вполнедостаточно возможностей MySQL 3.23, но я использовал MySQL 4.0, т.к. 3.23 уже морально устарела.
Доступ к сайтуосуществляется при помощи веб-сервера. Веб-сервер – это программный продукт,осуществляющий функционирование сайтов по протоколу HTTP. Веб-сервер
Лучшимвеб-сервером для моих целей является Apache (Апач).
«The Apache HTTP Server Project is an effort to develop and maintainan open-source HTTP server for modern operating systems including UNIX andWindows NT. The goal of this project is to provide a secure, efficient andextensible server that provides HTTP services in sync with the current HTTPstandards.
Apache has been the most popular web server on the Internet sinceApril 1996. The November 2005 Netcraft Web Server Survey found that more than70% of the web sites on the Internet are using Apache, thus making it morewidely used than all other web servers combined»[1].
Кроме того, поАпачу много вполне понятной документации, он прост в установке и настройке,очень мало весит (меньше 5М), работает исключительно стабильно.Редакторы кода
Для написаниякода я использовал 2 текстовых редактора.
Первый – AkelPad– это бесплатный текстовый редактор для Windows, призванный заменить Блокнот,входящий в состав этой системы. Разработан Алексеем Кузнецовым, студентом 5гокурса физтеха.
Егопреимущества:
· маленький размер (менее 20 Кб в архиве)
· работа с файлами произвольного размера (тогда как у Блокнота естьограничение 64 Кб)
· работа с кодировками: Windows, DOS, КОИ8-Р, различные вариантыUnicode (UCS-2LE, UCS-2BE, UTF-8), а также с любой кодовой страницей,установленной в системе
· корректное автоопределение кодировки
· поиск и замена как обычных строк текста, так ипоследовательностей специальных символов
· продуманные «горячие» клавиши назначены почти каждойкоманде (выход по ESC, сохранить по F2 и т.п.)
· простота и отсутствие перегруженности ненужными и усложняющимиработу функциями
Подробнее — akelpad.net.ru
Второй – EditPlus. Это уже коммерческий (платный) редактор. Цитата:
EditPlus is an Internet-ready 32-bit text editor, HTML editor andprogrammers editor for Windows. While it can serve as a good replacement forNotepad, it also offers many powerful features for Web page authors andprogrammers.
· Syntax highlighting for HTML, CSS, PHP, ASP,Perl, C/C++/C#, Java, JavaScript and VBScript. Also, it can be extended forother programming languages based on custom syntax files.
· Seamless Web browser for previewing HTML pages,and FTP commands for uploading local files to FTP server.
· Other features include HTML toolbar, user tools,line number, ruler, URL highlighting, auto-completion, cliptext, columnselection, powerful search and replace, multiple undo/redo, spell checker,customizable keyboard shortcuts, and more.[2]
Уже не такбыстр, как AkelPad, но довольно удобен в настройке иработе. Рекомендован 440hz.ru.
Инструкция программиста Системные требования
Для работыэтого проекта необходим сервер и клиент. Сервер должен состоять из операционнойсистемы с установленным веб-сервером, базой данных MySQLи интерпретатором PHP(4) версии не менее 4.3.2.
Клиент должениметь графический браузер, поддерживающий протокол HTTP,стандарты HTML4 и CSS2.
Я использовалследующую конфигурацию:
Сервер: Win32, Apache 2.0.55, PHP 4.4.2, MySQL 4.0.26
Клиент: Win32, Opera 8.52Инструкция по установке
Для установкипроекта необходимо в файл init.classпрописать необходимые значения – путь к проекту, e-mail тех.поддержки и реквизиты БД (логин, пароль, имя БД).
Веб-сервернастраивается следующим образом (на примере Apache):
DocumentRoot «путь:/к/проекту/public_html»
DirectoryIndex main.php
Ну и ещё такаяважная вещь – в php.iniпараметр register_globalsдолжен быть установлен в Off (сейчас это делают поумолчанию).
Этого должнохватить для успешной работы проекта.
Структура проекта
/>
Описание исходных кодов
Для построенияэтого проекта, как видно из схемы на предыдущей странице, был взят принцип организациисайтов Руслана Курепина.
Чтобы необъяснять всё с самого начала, приведу здесь сразу код главной страницы сайта иобъясню построчно. Cтрочки пронумерованы.
файл: public_html/main.php
1. Открываемскобку – входим в режим PHP.
2. Подключаемкласс. Такая форма записи позволяет переносить проект по папкам, не исправляякаждый раз путь к файлу.
require(str_replace('/public_html','/class',$_SERVER['DOCUMENT_ROOT']).'/main.class');
3. Создаём экземпляр класса.
$my=new class_main;
4. Подключаем on_load.inc –действия, выполняющиеся для многих страниц.
include($my->path_inc.'/on_load.inc');
5. Заголовокстраницы – отображается в двух местах.
$title='Main Page';
6. Навигатор.
$navigator='Главная';
7. Всекритические функции выполнены, мы знаем что страница загрузится – отправляем HTTP-заголовки (хидеры).
$my->send_headers();
8-9. Подключаеминклуды (подключаемые куски кода).
include($my->path_inc.'/top.inc');
include($my->path_inc.'/middle.inc');
10. Выходим изрежима PHP
?>
11-12. Выдаём HTML-код без обработки, а именно 2 строчки приветствия
какой-то текст на главной странице.например,такой:
Здравствуйте!Этофайлообменник, моя курсовая за 4 семестр.
13-15.Подключаем нижнюю часть таблички.
include($my->path_inc.'/bottom.inc');
?>
Следуетзаметить, что после 8 строчки я не использую flush()…наверное, это нецелесообразно в таком маленьком проекте.
Теперь подробнорассмотрим инклуды.
inc/top.inc
1. Говоримбраузеру, что это HTML 4.0
2. Начало HTML-кода.
3. Открываем head.
4. Подключаем иконку
5. Строкадобавлена для поддержки просмотрщика счётчика, чтобы меньше модифицировать код.Суть: если вызван файл counter.php,то подключается нужный CSS-файл
6. Подключаемосновную css-ку. В случае счётчика она выше поприоритету, чем предыдущая, поэтому затирает лишние стили.
7. Говоримбраузеру, что эта страница не предназначена для размещения во фреймах.
8. Сведения об авторе.
copy_name?>">
9. Мой любимый текстовый редактор
generator?>">
10. Версия сайта.
version?>">
11. Заголовок – показывается вверху окна.
::site_name?>
12,13.Закрываем head, открываем body– начинаем рисовать страничку.
14. Таблица вовсю ширину экрана
15,16. Надпись: File Exchanger.
site_name?>
17. Заголовок: Main Page(или какой там прописан в $title)
18-20. Формадля гейта (вход-выход)
path_inc.'/login_form.inc'); ?>
21-23. пишемвторой строчкой версию и закрываем таблицу
version?>
24. навигатор,который мы заранее прописали в $navigator.
навигатор ::
Небольшоетеоретическое отступление по поводу CSS.
Вообще,существует три способа использования CSS.
1. Включение CSS непосредственно в HTML-код.Например, так:
Красный цвет поцентру
Можетиспользоваться для одноразовых включений в HTML (нарядус ) и в случаях, когда нецелесообразноменять существующие CSS-файлы или подключать новые.
2. Включение CSS в блоке страницы.Вот так:
...
red {color:#f00}
...
Красный текст
...
Такой способ нерекомендуется применять, однако это предпочтительно в одном случае – еслидизайн сайта, настраивается под каждого пользователя индивидуально. Кодеруменьше работы – переменные дизайна банально вставляются на нужные места и нетсмысла писать несколько CSS-ок.
3. Подключениевнешних CSS-файлов. Реализуется так:
И в нужнуюпапку кладётся нужный файл.
Как видно, вэтом проекте я использую третий способ.
inc/middle.inc
1. основнаятаблица во весь экран.
2. она состоитиз одной строчки.
3. в первойячейке – содержимое menu.inc.
path_inc.'/menu.inc'); ?>
4-5. во второй– результат гейта (вы зашли успешно либо вы не зашли вообще). Потом начинаетсяосновной текст.
gate_result?>
inc/bottom.inc
1-2. закрываемосновную таблицу
3. копирайт
© 2006 copy_url?>">copy_name?>.
4-5. конец HTML
Теперь объясняючто за переменные типа $path_inc, $copy_name, $site_name,$generator, $version и др. Встречались впредыдущих инклудах. Эти глобальные переменные прописаны в init.class. Вот он:
Называем класси открываем скобку
class class_init
{
Пути к проектуна диске – при переносе должны быть изменены
var $path_data='d:\Work\FileExchanger alpha\data';
var $path_inc='d:\Work\FileExchanger alpha\inc';
var $path_files='d:\Work\FileExchanger alpha\files';
var $path_http='http://localhost/';
копирайт
var $copy_name='stbear-l2';
var $copy_url='http://copi.ru/68614';
мой любимыйредактор
var $generator='AkelPad2.1.6';
имя сайта –отображается в top.inc
var $site_name='File Exchanger';
адреса e-mail
var$email_support='stbear@centrum.cz';
var $email_robot='robot@localhost';
версия
var$version='alpha4+';
времякэширования страниц (функция send_headers())
var $cache_time=180;
максимальныйномер ошибки, которая отправляется админу.
var $debug_level=50;
указатель насоединение с базой
var $sql_link;
реквизитыдоступа к БД
var $sql_host='localhost';
var $sql_login='root';
var $sql_pass='';
var $sql_db='db_files';
запросформируется в этой переменной
var $sql_task;
ошибки SQL (для дебага)
var $sql_error;
var $sql_errno;
результатвыполнения запроса
var $sql_res;
Стартуетсоединение с БД, если этого не было сделано ранее
function sql_start()
{
Устанавливаемсоединение с SQL-сервером. Использовать pconnect предпочтительнее
if(!$this->sql_link=@mysql_pconnect($this->sql_host,$this->sql_login,$this->sql_pass))return(11);
Выбираем нашуБД.
if(!@mysql_select_db($this->sql_db)) return(12);
return(0);
}
Основнаяфункция для взаимодействия с БД
function sql_run()
{
Если нетсоединения с БД, вызывается sql_start()
if(!$this->sql_link) if($err=$this->sql_start()) return($err);
собственновыполняется запрос
$this->sql_res=@mysql_query($this->sql_task,$this->sql_link);
Проверяем, былили ошибки
if($this->sql_errno=mysql_errno($this->sql_link))
{
Если былаошибка, запоминаем её описание и возвращаем ошибку 13 – «ошибка выполнениязапроса»
$this->sql_error=@mysql_error($this->sql_link);
return(13);
}
return(0);
}
}
конец
?>
Main.class нет смысла описывать из-заего размера.
Распишу оставшийсяинклуд.
inc/on_load.inc
Запускаем счётчик
if($err=$my->counter()) $my->get_err($err);
если естьпеременная, полученная от формы входа
if(@$_POST['gate_submit'])
{
Проверяем логини пароль
if($err=$my->gate_open())$my->gate_result=$my->get_err($err);
else $my->gate_result='Вы успешно вошли всистему.';
}
Еслипользователь решил выйти, удаляем сессию
if(isset($_GET['out'])) $my->gate_close();
восстановление сессиипо кукам
elseif($err=$my->recognize_cookie()) $my->get_err($err);
?>
Для примераприведу функцию добавления файла.
Ппеременные сговорящими именами – объявляются в начале класса
var $in_file_ext;
var $in_file_cat;
var $in_file_desc;
var $in_file_name;
var $in_file_user;
var $in_file_id;
var $in_file_enable;
var $in_file_dt;
var $in_file_size;
объявление функции
function in_file_add()
{
Еслипользователь не зарегистрирован, то что он тут делает?
if(!$_SESSION['status'])return(6);
проверка файла,теперь переменные «наполнились»
if($err=$this->in_file_check()) return($err);
файл и данные впорядке, составляем запрос
$this->sql_task='insert intotbl_files(f_ext,f_name,f_desc,f_dt,f_size,f_user)values(\''.$this->in_file_ext.'\',\''.$this->in_file_name.'\',\''.$this->in_file_desc.'\',\''.$this->in_file_dt.'\',\''.$this->in_file_size.'\',\''.$this->in_file_user.'\')'; атеперь выполняем запрос
if($err=$this->sql_run()) return($err);
данные добавились, получаем ID
$this->sql_task='select last_insert_id()';
if($err=$this->sql_run()) return($err);
if(!list($this->in_file_id)=mysql_fetch_row($this->sql_res))return(14);
перемещаем файл
if(!move_uploaded_file($_FILES[$this->in_file_user]['tmp_name'],$this->path_files.'/'.$this->in_file_id.'.'.$this->in_file_ext)){
если он неперемещён, удаляем запись из базы...
$this->sql_task='delete from tbl_files wheref_id='.$this->in_file_id;
if($err=$this->sql_run()) return($err);
… и возвращаемошибку
return(23);
}
Файл удачноперемещён, делаем связку с рубрикой
$this->sql_task='insert into tbl_cats_files(cf_cat,cf_file) values(\''.$this->in_file_cat.'\',\''.$this->in_file_id.'\')';
if($err=$this->sql_run()) return($err);
если не стоитгалка «Скрыть файл», разрешаем:
if(!@$_POST['file_enable'])
{
if($err=$this->in_file_enable()) return($err);
if($err=$this->in_cat_file_enable()) return($err);
}
$this->result='Файл успешно добавлен.Теперь он всегда доступен по ссылке: in_file_id.'>http://'.$_SERVER['HTTP_HOST'].'/get.php?id='.$this->in_file_id.'.';
Всё в порядке,возвращаем ноль.
return(0);
}
Фрагмент public_html/file/add.php (форма)
Enctype добавляется, тк мы используем POST-аплоадфайлов
" method=post>
Информация для пользователей
Параметры добавляемогофайла:author:, date:get_dt()."\n"?>, рубрика:
Тут выводится списокрубрик
generate_option_list(); ?>
Название файла: "size=80 maxlength=50>
Описание:
Имя файловойпеременной – логин пользователя (так проще)
Сам файл: ">
Скрыть файл? >при включённой опции файл не будетотображаться в рубрике, но будет доступен по по сгенерированномуURL-адресу
Принцип работы остальныхфункциональных частей аналогичен приведённым примерам. Кроме того, текстскриптов понятен и без комментариев.Инструкцияпользователя
Для запускапрограммы необходимо запустить любой браузер и в строке URLввести localhost или 127.0.0.1. На вашем экранепоявится следующая страница (рис.1):
/>
Рис.1 Главнаястраница файлообменника.
Теперь вамследует зарегистрироваться.
Если у Вас ещенет своего имени (логина) и пароля, щелкните мышкой на пункте меню«Регистрация». На открывшейся странице (рис.2) заполните поля «логин», «пароль», повторите Ваш пароль в поле «Исчо разок». Если данные введены верно, нажмитекнопку «Регистрировать».
По умолчаниюдлина логина пользователя не может быть меньше 2 символов, а длина пароля –меньше 4.
Если Вызарегистрировались успешно, сообщение об этом появится на страничке (см.рис.3).
Теперь Вы сможетевойти в систему как зарегистрированный пользователь. Для этого введите логин ипароль в окошке справа вверху и нажмите кнопку «Войти».
Если логин ипароль введены правильно, появится сообщение «Вы успешно вошли в систему» иследующая страничка (см.рис.4).
/>
Рис.2 Страницарегистрации.
Введите логин ипароль в окошке справа вверху и нажмите кнопку «Войти».
/>
Рис.3 Страницас сообщением об успешной регистрации.
/>
Рис.4.Страничка зарегистрированного пользователя.
Слева страничкирасположено меню. Для простого пользователя оно состоит из трех разделов:
— Рубрики;
— Пользователи;
— Файлы.
Дляпользователя со статусом «Администратор» добавлены разделы
— Рубрики\редактирование\;
— Администрирование
Рассмотримразделы меню подробнее
1. Рубрики.
Здесьперечислены темы, по которым группируются предлагаемые файлы. Щелчок левойкнопкой мыши по названию рубрики открывает перечень файлов выбранной тематики.
В примере нарис.5 на странице одновременно отображается перечень из 5 файлов. Если врубрике больше 5 файлов – вверху и внизу странице появляется список листов.Выбрав следующую страницу Вы можете прочитать продолжение списка файлов.
Для каждогофайла приводится краткая информация, автор, размер, дата последнего обновления,рейтинг популярности (количество скачиваний).
Нажав на ссылкуDownload, относящуюся к выбранному Вами файлу, выможете скачать его для дальнейшего использования.
/>
Рис.5. Переченьфайлов рубрики TEST_CAT 1.
Пользователи
В этом разделетолько один пункт – «Настройка». Выбрав этот пункт вы можете изменить свойлогин и пароль, количество файлов, одновременно отображаемых на странице, атакже данные для связи с вами, такие как URL и ICQ (см.рис.6).
/>
Рис.6. Страницанастройки характеристик работы пользователя.
2. Файлы
Этот разделсодержит пункты, позволяющие изменять файлы предлагаемых рубрик:
— Добавить
В этом пунктевы можете выбрать файл для передачи в файлообменник, ввести его название,краткое описание. Файл можно поместить в одну из существующих рубрик (рис.7).
Если Вы нехотите, чтобы имя Вашего файла появлялось в перечне файлов рубрики, его можнопометить как скрытый. При этом доступ к файлу можно будет осуществлять поссылке. В любом случае этот параметр всегда можно изменить через страницуизменения файлов.
/>
Рис.7 Страницадобавления файла.
— Изменить
Выбрав пунктИзменить, Вы открываете страничку с перечнем файлов по рубрикам(рис.8). Увас есть возможность выбрать рубрику и файл для внесения изменений.
Если Вы простойпользователь, Вы можете редактировать только свои файлы. Если Вы администраторили модератор – Вам доступны файлы всех пользователей.
Для внесенияизменений в файл открывается страница как на рис.9. Вы можете изменить названиефайла, его описание, поменять рубрику, открыть/скрыть файл, загрузить инуюверсию файла.
/>
Рис.8. Страницасо списком файлов для изменения.
/>
Рис.9 Страница измененияфайла.
— Удалить
В перечнефайлов (рис.10) Вы можете выбрать файл для удаления.
Если Вы простойпользователь, Вы можете удалять только свои файлы. Если Вы администратор илимодератор – Вам доступны файлы всех пользователей.
/>
Рис.10. Страничкаудаления файла.
Рубрики
Этот разделдоступен только администратору и содержит пункты, позволяющие изменять рубрики:
— Добавить
Здесь вы можетесоздать новую рубрику. Для этого нужно ввести её название – оно будетотображаться в списке рубрик – и описание – оно появляется при просмотресодержимого рубрики (рис. 11).
/>
Рис.11 Страницадобавления рубрики.
— Изменить
Для изменениярубрики вы выбираете её из списка (рис.12).
/>
Рис.12 Страницасо списком рубрик для изменения.
Открываетсястраница (рис.13), в которой вы сможете изменить название и описание рубрики, атакже запретить или разрешить её.
/>
Рис.13 Страницаизменения рубрики.
— Удалить
Для удалениярубрики её нужно выбрать из списка (рис.14).
/>
Рис.14 Страницаудаления рубрик.
3. Админ
Раздел«Администрирование» создан для контроля эффективности работы файлообменника.
— Счетчик
Эта страничкапозволяет просмотреть результаты работы счётчика. Состоит из 2х частей: впервой части (рис. 15) подсчитывается число обращений к отдельным страницам сайта.Во второй части (рис. 16) записываются IP-адресазашедших на сайт.
/>
Рис.15 Просмотрчисла зашедших на различные URL сайта.
/>
Рис.16 Страницадля просмотра данных о зашедших на сайт посетителях.
— юзеры(пользователи)
На этойстраничке (рис.17) можно просмотреть список пользователей и совершить над нимипростые действия: повысить до модератора (синяя стрелка вверх), снять статусмодератора (жёлтая стрелка вниз) или удалить (красный крестик). Также можнопросмотреть дополнительную информацию о пользователе, щёлкнув на его логине(рис.18). Щёлкнув по IP-адресу (если это не 127.0.0.1),вы увидите данные о провайдере.
/>
Рис.17 Страницадля просмотра списка пользователей.
/>
Рис.18 Страницадля просмотра информации о конкретном пользователе.
— ошибки
На этойстраничке (рис. 19) вы можете просмотреть лог ошибок, которые не удалосьоправить тех.поддержке посредством SMTP-сервера, чтобывы могли принять меры для их устранения.
/>
Рис.19 Страницадля просмотра лог-файла ошибок.
Заключение
В ходе курсовойработы был создан файлообменник, работающий под управлением PHPи MySQL.
В следующейверсии файлообменника мне хотелось бы добавить:
1. Болеесовершенный счётчик, осуществляющий автоопределение пользователей и ботов,зашедших на сайт с выводом удобной статистики.
2. Работа сe-mail (регистрация, подтверждение, рассылка, аттачи)
3. Сокрытиепеременных в адресной строке (как на 440hz.ru)
Задание на курсовойработе было выполнено полностью и в соответствии с техническим заданием.
Списоклитературы
1. Люк Веллинг, Лора Томсон «MySQL. Учебное пособие.» Москва,Вильямс, 2005
2. php.net –официальный сайт PHP
3. phpclub.ru – сайтрусских PHP-программистов.
4. php.ru – новыйрусскоязычный сайт о PHP
5. 440hz.ru –персональный сайт Андрея Лугового, одного из создателей php.ru
6. kurepin.ru –персональный сайт Руслана Курепина
7. akelpad.net.ru – сайтредактора AkelPad
8. editplus.com – сайт редактораEditPlus
9. httpd.apache.org –официальная страница веб-сервера Apache
10. http://phpwars.net – PHP Wars, сайт о практических применениях PHP
11. http://pterodactyl.l2p.net – сайтПтеродактиля о PHP
12. http://webdeveloper.net.ru – ещё одинфорум для веб-разработчиков