Размер и счетчик скачиваний файла на PHP. MySQL не используется. Благодаря гибкости и удобству использования является хорошим решением в ряде случаев.
A. Блок счетчика и файла, который предлагается к скачиванию и число скачек которого выводится:
1. Создать директорию (expl_dl
), в которую поместить предлагаемый для скачивания файл (expl.zip
).
2. Создать в этой же директории пустой файл (expl.txt
), в котором будет храниться число скачиваний.
3. Создать в этой же директории файл обработчика числа скачиваний (expl.php
):
<?php
$f=fopen("expl.txt","a+");
flock($f,LOCK_EX);
$count=fread($f,100);
@$count++;
ftruncate($f,0);
fwrite($f,$count);
fflush($f);
flock($f,LOCK_UN);
fclose($f);
Header("location:expl.zip");
?>
B. Блок определения размера файла:
До <!DOCTYPE>
:
<?php
function filesize_get($file)
{
// проверяем, существует ли файл
if(!file_exists($file)) return "Файл отсутствует.";
//определяем размер файла
$filesize = filesize($file);
// Если размер переданного в функцию файла больше 1кб
if($filesize > 1024)
{
$filesize = ($filesize/1024);
// если размер файла больше одного килобайта
// пересчитываем в мегабайтах
if($filesize > 1024)
{
$filesize = ($filesize/1024);
// если размер файла больше одного мегабайта
// пересчитываем в гигабайтах
if($filesize > 1024)
{
$filesize = ($filesize/1024);
$filesize = round($filesize, 2);
return $filesize." GB";
}
else
{
$filesize = round($filesize, 2);
return $filesize." MB";
}
}
else
{
$filesize = round($filesize, 2);
return $filesize." Kb";
}
}
else
{
$filesize = round($filesize, 2);
return $filesize." bytes";
}
}
?>
C. Блок вывода в браузер:
Между <body></body>
:
<a href="expl.php">Скачать файл</a>
<!--выводим ссылку для скачивания-->
<?php
$file="expl.zip"; // инициализируем переменную определения размера нужным файлом
echo " Размер: <span style=\"color:blue\">".filesize_get($file)."</span> |"; //выводим размер этого файла
$s=file("expl.txt"); // инициализируем переменную файлом, хранящим число скачиваний нужного файла
echo " Скачан: <span style=\"color:red\">$s[0]</span> раз"; //выводим результат
?>
Собственно, синтаксис с выводом $s[0]
хромает, хоть и работает: нужно или через включение – {$s[0]}
, или через стандарт – echo " Скачан: <span style=\"color:red\">".$s[0]."</span> раз";
Поскольку используется только php
, то показания счетчика скачиваний в браузере изменяются при обновлении страницы.
Комментарии:
coder.hol.es /* Админ */#
Добавьте в файл .htaccess: AddType application/octet-stream .rar или AddType application/force-download .rar или AddType application/download .rar - а можно и все вместе.