Новичок
Профиль
Группа: Участник
Сообщений: 26
Регистрация: 30.11.2005
Репутация: нет Всего: нет
|
Наконец нашел ответ на этот вопрос!!! Мож кому надо... | Цитата | ([email protected]; WWW.OFFBIT.1GB.RU)
УСТРАИВАЕМ БЕСПЛАТНОЕ ФАЙЛОХРАНИЛИЩЕ ДЛЯ ПЛАТНОГО ХОСТИНГА
У НАС ЕСТЬ ПЛАТНЫЙ ХОСТИНГ, МЫ ПЛАТИМ ЗА НЕГО ПРИМЕРНО ПЯТЬ ДОЛЛАРОВ В МЕСЯЦ. КОНЕЧНО, МЕСТА, ВЫДЕЛЕННОГО СЕРВЕРУ, НЕ ТАК МНОГО, КАК ХОТЕЛОСЬ, А ХОЧЕТСЯ РАЗМЕСТИТЬ ТАМ ОЙ КАК МНОГО! ВЫХОД ЕСТЬ — NAROD.RU 
[что за система?] Конечно, на narod.ru мы разместим весь нужный софт, так как там дают неограниченное пространство, а потом напишем хитроумную систему, которая будет лежать на платном хостинге. С помощью этой системы любой пользователь сможет скачивать выложенные файлы, а ссылки будут вести на платный хостинг, и они будут выглядеть так: http://site.ru/download/download.php?id=19.
Система будет состоять из четырех файлов:
1 Скрипт добавления софта (add.php).
2 Скрипт скачки (download.php).
3 Форма для добавления софта (form_add.php).
4 Скрипт, отображающий софт, добавленный нами (index.php).
[принцип работы] системы очень прост. С помощью скрипта мы добавляем в таблицу имя сервера, имя файла и его описание. Скрипт скачки просто-напросто выдирает из таблицы данные, соответствующие номеру id (он передается из скрипта методом GET), и по ним перенаправляет браузер на софт.
Система использует базу данных MySQL, так что приконнектимся к мускулу и выполним простой запрос (листинг 1).
CREATE TABLE `download` (
`uid` int(11) NOT NULL auto_increment,
`file` text NOT NULL,
`server` text NOT NULL,
`ops` longtext NOT NULL,
`click` int(11) NOT NULL default '0',
PRIMARY KEY (`uid`)
) TYPE=MyISAM;
Этим запросом мы создаем таблицу download.
Поля и их описания в этой таблице:
- uid — уникальный номер файла;
- file — имя файла;
- server — имя сервера;
- ops — описание файла;
- click — количество скачиваний файла.
[начинаем кодить.] В скрипте form_add.php разместится форма добавления нового софта, она будет передавать данные скрипту add.php. В качестве метода отправки данных в ней мы будем использовать GET. Сами данные — это имя сервера, имя файла и его описание, то есть в скрипте мы напишем следующие поля:
<input type=text size=30 name=filen> — сюда будем вводить имя файла;
<input type=text size=30 name=server> — сюда — имя сервера;
<input type=text size=80 name=ops> — сюда — описание самого файла.
Например, мы закачали файл linux.rar на сайт http://mysite.narod.ru. Отсюда следует, что в поле File name должно быть введено linux.rar, а в поле Server name — http://mysite.narod.ru.
Однако можно и не писать в конце имени сервера знак прямого слэша «/». Тогда придется добавлять его в скрипте, который помещает все данные в таблицу (add.php), то есть вместо этой строки ($put = "$server$file";) нужно написать $put = "$server/$file"; (описание скрипта смотри ниже). В файле add.php мы соединяемся с базой данных MySQL, потом проверяем все передаваемые параметры на пустые строки и, если все нормально, добавляем эти переменные в таблицу. Пишем так:
mysql_connect($host,$user,"$password"); — здесь $host — имя сервера MySQL; $user — имя пользователя базы данных; $password — пароль этого пользователя.
Все переменные объявляем в начале скрипта. Далее выбираем базу данных, в которой лежит созданная таблица download: @mysql_select_db($base) or die("Base Error"); $base — в этой переменной хранится имя базы, ее также объявляем в начале.
Затем мы делаем проверку на пустые строки — я не буду описывать как (можно посмотреть в исходнике на диске). После проверки, если все нормально, добавляем данные в таблицу:
mysql_query("insert into download values('', '$filen', '$server', '$ops','0')");
В этом скрипте нужно обязательно добавить проверку на расширение закачиваемых файлов, то есть скрипт должен фильтровать все файлы с расширениями *.php; *.php3;*.html;*.htm и т.д. Однако если этим скриптом будет пользоваться только админ, то и не нужно писать никакую фильтрацию. Можно пойти совсем простым путем и сделать фильтрование так, чтобы скрипт принимал только расширение *.rar, — так будет намного проще. Ах да! Здесь нужно добавить еще одну фильтрацию на спецсимволы в переменных: $filen, $server $ops.
Теперь рассмотрим стартовую страницу. На ней будут выводиться ссылки и описания всех добавленных файлов. Принцип работы скрипта похож на принцип работы предыдущего скрипта. Мы так же соединяемся с MySQL, только вместо добавления информации в таблицу мы извлекаем ее и выводим на экран.
..здесь соединяемся с MySQL...
print "<body bgcolor=000000 link=orange alink=orange vlink=orange text=ffffff>";
print "<center><div style=background-color:orange;color:000000>Best soft</div></center>";
….
Теперь возьмем всю информацию из таблицы, то есть мы выполним такой запрос:
$re=mysql_query("select * from download order by uid desc");
Возникает законный вопрос: что такое desc? Рассказываю. Это нужно для того, чтобы тот файл, который был добавлен последним, являлся первым в списке вывода.
Далее все просто: мы перебираем весь архив и выводим его на нашу страничку (листинг 2).
while($res=mysql_fetch_array($re))
{
print "<div style='border-left: 1px orange solid;border-right: 1px orange solid;border-bottom: 1px orange solid;padding:6px'>
<a href='download.php?id=$res[uid]'><b>$res[file]</b></a>
<div class=tekst>$res[ops]<br>
Скачиваний: ($res[click])<br>
</div></div>";
}
При клике на ссылку скрипту download передается параметр id, и скрипт выдирает из таблицы всю нужную информацию.
В скрипте download.php, как всегда, соединяемся с MySQL и выполняем точно такой же запрос, как и в предыдущем скрипте, но здесь необязательно писать desc. Далее снова перебираем весь полученный массив и сравниваем переменную $id, полученную из стартовой страницы. $res[uid] — это уникальные идентификационные номера каждой программки. Если они совпадают, то мы увеличиваем на 1 число, стоящее в таблице в поле click (поле click отвечает за число скачиваний, если ты не забыл) .Потом просто делаем перенаправление на адрес, сгенерированный из таблицы (листинг 3).
while($res=mysql_fetch_array($re))
{
$click = $res[click];// В этой переменной хранится количество скачиваний
if ($id == $res[uid])// Проверяем совпадение id из формы и uid из таблицы
{
$file = $res[file];
$server = $res[server];
$put = "$server$file";// Генерим адрес программы
$click = $click + 1;
mysql_query("UPDATE download SET click=$click WHERE uid=$id");
header("location:$put");// А здесь перенаправляем
}
}
[один минус] этой системы, заметный не всем, — то, что при клике на ссылку появляется стандартное окно закачки и внутри него в поле «Источник» будет вписан истинный адрес сервера, откуда пользователь качает файл. Однако если используется утилита типа Flash Get, то ты ничего не увидишь больше, кроме имени закачиваемого файла.
Вот и все. Надеюсь, эта статья заинтересовала всех тех, кто хочет сэкономить на хостинге. Кстати, для хранения софта лучше пользоваться бесплатным хостингом www.h1.ru
Ссылки по теме
ТИП: WWW
www.offbit.1gb.ru/download — ЗДЕСЬ МОЖНО НАЙТИ СИСТЕМУ, ОПИСАННУЮ ВЫШЕ, В РАБОЧЕМ РЕЖИМЕ.
www.woweb.ru — ЦЕЛЫЙ АРХИВ PHP-СКРИПТОВ НА ЛЮБОЙ ВКУС.
www.h1.ru — БЕСПЛАТНЫЙ ХОСТИНГ. ДАЖЕ КРУЧЕ, ЧЕМ narod.ru.
www.1gb.ru — ПО-МОЕМУ, ЛУЧШИЙ ПЛАТНЫЙ ХОСТИНГ.
|
|