Интернет, компьютеры, софт и прочий Hi-Tech | |||||||
Избранные докиМетки (все метки)hi tech, internet, it, интернет, информационные технологии, ит, по, программное обеспечение, сайт, софт
Подписаться через RSS2Email.ru
Дополнительнооптимизация, сайт, мониторы, движок, Битрикс, хостинг, сайты, мобильные, электроника, видеокарта |
PHP — защита скачиваемых файловХотите предотвратить установку ссылок на файлы для скачивания? Данный сценарий будет загружать страницу перед скачиванием файла. Оператор HTTP-заголовка начинает загрузку файла. PHP используется для передачи файла. Принцип работыHTTP-заголовки должны быть отправлены перед каким-либо выводом данных в браузер. PHP использует функцию header для передачи сырых HTTP-заголовков. В этом примере мы собираемся получить имя файла из URL http://www.yourdomain.com/download.php?file=download.zip <?
$dir="/path/to/file/";
if (isset($_REQUEST["file"])) {
$file=$dir.$_REQUEST["file"];
header("Content-type: application/force-download");
header("Content-Transfer-Encoding: Binary");
header("Content-length: ".filesize($file));
header("Content-disposition: attachment; filename=\"".basename($file)."\"");
readfile("$file");
} else {
echo "No file selected";
}
?>
Мы начали с установки каталога, в котором будут находиться
файлы для загрузки в Оператор Отслеживание загрузки файлов с помощью MySQLДанный метод можно использовать для записи информации о загрузках файлов. В данном примере я буду отслеживать количество загрузок файлов и время последней загрузки. Эту информацию мы будем хранить в базе данных MySQL. Далее приведена структура таблицы. CREATE TABLE filestats ( fileid INT NOT NULL auto_increment, filename TEXT, downloads INT NOT NULL, lastdownload DATETIME, primary key (fileid) ); Поле Вставьте следующий код после оператора
<?
$db=mysql_connect($mysql_host,$mysql_login,$mysql_passwd) or die(mysql_error());
mysql_select_db($mysql_database);
$query=mysql_query("select * from filestats
where filename='".basename($file)."' LIMIT 0,1")
or die (mysql_error());
$fileexist=@mysql_num_rows($query));
$now=date("Y-m-d G:i:s");
if ($fileexist>0) {
$updatequery=mysql_query("update filestats set downloads=downloads+1,
lastdownload='$now'
where filename='".basename($file)."'")
or die (mysql_error());
} else {
$addquery=mysql_query("insert into filestats
(filename,downloads,lastdownload)
values ('".basename($file)."','1','$now')")
or die (mysql_error());
}
?>
Функция В данном блоке кода мы подключаемся к базе данных и обновляем статистику скачивания файлов. Сначала После того, как соединение установлено, мы проверяем, что в таблице есть
запись для файла. Первый вызов функции Переменная Другие способы примененияДругие способы применения данного метода включают загрузку контента, для которого требуется подписка. Для этого заключите код в блок для проверки учетных данных. Это легко сделать
с помощью оператора Автор: deuteride, специально для xBB.uz, 17.08.2011 P.S. от редактора. Хочу предупредить читателя от бездумного копирования продемонстрированного в статье кода в код рабочих проектов, поскольку автор не включил в свой код защиту от SQL-инъекций и загрузки не предназначенных для этого файлов. Это было сделано для того, чтобы не ухудшать читабельность кода для новичков. Кроме того, при внимательном чтении можно заметить, что приведенный в статье код можно оптимизировать. Предыдущие публикации: Последнее редактирование: 2011-08-17 10:51:55 Метки материала: php, защита, файл, php защита, защита скачиваемых файлов, www, интернет, веб, it, web, internet, скрипты, программирование, информационные технологии, ит, разработка по, инет, сайт своими руками, интернет и www, сайт своими силами 2 комментария
Еще один минус - докачка не поддерживается
|
||||||
| 18.08.2011 10:40:15 | # |
© 2007-2012, Дмитрий Скоробогатов.
Разрешается воспроизводить, распространять и/или изменять материалы сайта
в соответствии с условиями GNU Free Documentation License,
версии 1.2 или любой более поздней версии, опубликованной FSF,
если только иное не указано в самих материалах.