Всем доброго времени суток, стоит задача создать контроллер реального количества скачиваний файлов не просто обработчик нажатия на onсlick а учитывать отмену скачивания и обрыв соединения если файл хоть теоретически не скачен не изменять количество скачиваний (точнее zip файлов если это важно) (сервер nginx) в результате должна получиться статистика например Храбан Олександр в 19:00 скачал файл Eset.zip, либо Каркуша Артемий пытался скачать файл но не скачал данную проблему необходимо решить желательно через php?
Нужно считывать с БД count и при скачивании файла, UDATE +1 count. использовал RedBeanPHP. Вот пример:
require('connect.php');
header("Content-type: text/html; charset=windows-1251");
$array = array("file.pdf", "files/file.pdf", "files/file2.pdf", "files/file3.pdf");
function updateFile($count, $id)
{
$query = R::getAssoc("UPDATE files SET count = $count WHERE id = '$id'");
return $query;
}
function getCount($id)
{
$query = R::findOne( 'files', 'id = '.$id.'');
return $query;
}
if ($_GET['id'] == 1){
$file = $array[1];
header('Content-Disposition: attachment; filename='.$array[1].'');
$count = getCount(1);
updateFile($count['count'] + 1, 1);
readfile($file);
}
else if ($_GET['id'] == 2)
{
$file = $array[2];
header('Content-Disposition: attachment; filename='.$array[2].'');
$count = getCount(2);
updateFile($count['count'] + 1, 2);
readfile($file);
}
else if ($_GET['id'] == 3)
{
$file = $array[3];
header('Content-Disposition: attachment; filename='.$array[3].'');
$count = getCount(3);
updateFile($count['count'] + 1, 3);
readfile($file);
}
else
{
header('Location: http://site.com/');
exit;
}
в примере несколько файлов..
connect.php - подключение к БД
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости