Счётчик загрузки файлов
Когда я задумал писать этот скрипт, мне он показался слишком простым, но по ходу разработки и интеграции его с системой пришлось подумать, как сделать его доступным для применения на любом сайте с поддержкой PHP. Скрипт счётчика загрузки представлен тремя файлами, я бы сказал всё таки, что это скорее модуль, который может использоваться на любом сайте, если знать нюансы скрипта. Продолжим. И так тремя файлами представлен счётчик загрузки, которые содержаться в отдельной папке, имя этой папки можно задать произвольно. Оно не влияет на работу программы.
Файлы счётчика:
index.php - главный файл программы, в нём собственно и содержится весь скрипт.
download.php - представляет окно загрузки файла.
sts.css - это файл стиля самой таблицы где выводится результат работы.
stat - файл содержит статистику, некая база данных.
Четвёртый файл о котором я ранее не сказал, создаётся автоматически при первом обращении к скрипту. Он отвечает за статистику загрузки. Т.е. именно в нём сохраняется вся информация по количеству загрузок с сервера, того или иного файла. Принцип работы счётчика загрузок.
При обращению по адресу каталога например file_uploads - назовём так папку модуля. Скрипт определяет все файлы находящиеся в той папке где находится папка с модулем file_uploads. Проще сказать так, размещаете папку модуля в любой папке сайта от куда хотите раздавать файлы и вести статистику загрузки этих файлов.
Файлы имеющие пробел в имени, качаться не будут. Старайтесь писать имена одним словом или использовать знак подчёркивания или дефис. Например так: my_file.txt - это правильно. Так не правильно: my file.txt
Для того чтоб обнулить статистику, по всем файлам папки, достаточно удалить на сервере файл stat .
Файлы добавляемые или удаляемые из папки по которой ведётся статистика загрузок, обновляются автоматически, скрипт отслеживает изменения происходящие в директории в которой он работает. Ну а теперь сам скрипт.
Листинг № 1 - Скрипт - счётчик загрузки файлов index.php.
Code
<link href="./sts.css" rel="stylesheet" type="text/css">
<?php
// По ссылке получаем имя файла, который пытается загрузить пользователь.
$file_name = htmlspecialchars($_REQUEST['file_name']);
////////// БЛОК 1 ///////////////
//////////////// Собираем все имена файлов директории в массив ///////
// Текущий каталог.
$dir = "../";
// Массив для файлов.
$fname = array();
// Проверяем, каталог ли это?
if (is_dir($dir))
{
// Если каталог успешно открыт...
if ($dh = opendir($dir))
{
// ... считываем содержимое в переменную $file.
while (($file = readdir($dh)) !== false)
{
// Если это файл ...
if(is_file($dir . $file))
{
// ... добавляем его в конец массива.
array_push($fname, $dir .$file);
}
}
// Закрываем директорию.
closedir($dh);
}
}
////////////////// конец - БЛОК 1 /////////////////
?>