Смекни!
smekni.com

Файлообменник с веб-интерфейсом (стр. 3 из 4)

functionsql_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);

}

Основная функция для взаимодействия с БД

functionsql_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='<p class=ok>Вы успешно вошли в систему.';

}

Если пользователь решил выйти, удаляем сессию

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 into tbl_files(f_ext,f_name,f_desc,f_dt,f_size,f_user) values(&bsol;''.$this->in_file_ext.'&bsol;',&bsol;''.$this->in_file_name.'&bsol;',&bsol;''.$this->in_file_desc.'&bsol;',&bsol;''.$this->in_file_dt.'&bsol;',&bsol;''.$this->in_file_size.'&bsol;',&bsol;''.$this->in_file_user.'&bsol;')';а теперь выполняем запрос

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 where f_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(&bsol;''.$this->in_file_cat.'&bsol;',&bsol;''.$this->in_file_id.'&bsol;')';

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='<p class=ok>Файл успешно добавлен.Теперь он всегда доступен по ссылке :<br> <a href=http://'.$_SERVER['HTTP_HOST'].'/get.php?id='.$this->in_file_id.'>http://'.$_SERVER['HTTP_HOST'].'/get.php?id='.$this->in_file_id.'</a>.';

Всё в порядке, возвращаем ноль.

return(0);

}

Фрагмент public_html/file/add.php (форма)

Enctype добавляется, тк мы используем POST-аплоад файлов

<form enctype="multipart/form-data" action="<?=$_SERVER['REQUEST_URI']?>" method=post>

Информация для пользователей

Параметры добавляемого файла:<br><br>author: <?=$_SESSION['login']?>, date: <?=$my->get_dt()."&bsol;n"?>, рубрика:

Тут выводится список рубрик

<? echo $my->generate_option_list(); ?>

<br>Название файла: <input type=text name=file_name value="<?=@$_POST['file_name']?>" size=80 maxlength=50>

<br>Описание:<br><textarea name=file_desc cols=80 rows=5><?=@$_POST['file_desc']?></textarea>

Имя файловой переменной – логин пользователя (так проще)

<br><br>Сам файл: <input type=file name="<?=$_SESSION['login']?>">

<br>Скрыть файл? <input type=checkbox name=file_enable value="тра-ля-ля!!!"<? if(@$_POST['file_enable']) echo 'checked'; ?>><font size=1>при включённой опции файл не будет отображаться в рубрике, но будет доступен по по сгенерированному URL-адресу</font>

<br><input type=submit name=submit value="Добавить!">

</form>

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

Инструкция пользователя

Для запуска программы необходимо запустить любой браузер и в строке URL ввести localhost или 127.0.0.1. На вашем экране появится следующая страница (рис.1):

Рис.1 Главная страница файлообменника.

Теперь вам следует зарегистрироваться.

Если у Вас еще нет своего имени (логина) и пароля, щелкните мышкой на пункте меню «Регистрация». На открывшейся странице (рис.2) заполните поля «логин», «пароль» , повторите Ваш пароль в поле «Исчо разок». Если данные введены верно, нажмите кнопку «Регистрировать».

По умолчанию длина логина пользователя не может быть меньше 2 символов, а длина пароля – меньше 4.

Если Вы зарегистрировались успешно, сообщение об этом появится на страничке (см.рис.3).

Теперь Вы сможете войти в систему как зарегистрированный пользователь. Для этого введите логин и пароль в окошке справа вверху и нажмите кнопку «Войти».

Если логин и пароль введены правильно, появится сообщение «Вы успешно вошли в систему» и следующая страничка (см.рис.4).

Рис.2 Страница регистрации.

Введите логин и пароль в окошке справа вверху и нажмите кнопку «Войти».

Рис.3 Страница с сообщением об успешной регистрации.


Рис.4. Страничка зарегистрированного пользователя.

Слева странички расположено меню. Для простого пользователя оно состоит из трех разделов:

- Рубрики;

- Пользователи;

- Файлы.

Для пользователя со статусом «Администратор» добавлены разделы

- Рубрики &bsol;редактирование&bsol;;

- Администрирование

Рассмотрим разделы меню подробнее

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), в которой вы сможете изменить название и описание рубрики, а также запретить или разрешить её.