Итак, почти реализовал небольшое ТЗ – возможно кому-то пригодятся мои наработки…
Допустим, на сайте под управлением CMS Bitrix, необходимо определённому списку пользователей дать возможность скачивать определенный файл и фиксировать количество скачиваний.
Создаём группу для юзеров, которым можно скачивать (у меня получился ID=9)
На пользователей, вешаем пользовательское поле UF_CNT – куда будем складировать количество скачиваний файла.
Собственно – привожу содержимое скрипта, непосредственно “отдающего” нужный файл:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
<?require($_SERVER[“DOCUMENT_ROOT”].“/bitrix/modules/main/include/prolog_before.php”); $gID = 9; if ( CSite::InGroup( array($gID))) { // крутим счётчик // получаем текущее значение global $USER; $arFilter = array(“ID” => $USER->GetID()); $arParams[“SELECT”] = array(“UF_CNT”); $arRes = CUser::GetList($by = ‘ID’, $order = ‘ASC’, $arFilter,$arParams); if($res = $arRes->Fetch()) { $plex_cnt = $res[“UF_CNT”]+1; } // обновляем $user = new CUser; $user->Update($USER->GetID(), array(“UF_CNT” => $plex_cnt) ); // отдаём файл $filename = ‘file-info.zip’; header(“Pragma: public”); header(“Expires: 0”); header(“Cache-Control: must-revalidate, post-check=0, pre-check=0”); header(“Cache-Control: private”, false); // нужен для некоторых браузеров header(“Content-Type: application/force-download”); header(“Content-Disposition: attachment; filename=\””.basename($filename).“\”;” ); header(“Content-Transfer-Encoding: binary”); header(“Content-Length: “.filesize($filename)); readfile(“$filename”); exit(); } header(‘Location: …………’); |
Ну и ссылочку на данный скрипт отдаём только “правильным” пользователям. Проверка та-же if ( CSite::InGroup( array($gID))) { ….. }
Да, ещё момент – прямое скачивание файла file-info.zip нужно запретить в конфе nginx-а, т.к. именно он отвечает за отдачу статики location = /paht/file-info.zip { deny all }
(далеко не сразу этот момент вспомнил когда не мог понять – почему не работает запрет на скачивание именно этого файла установленный мной в .htaccess при правильной обработке в нём других правил)
Один комментарий на «“Битрикс. Учет скачиваний файла пользователями.”»
Круто! Давно хотел сделать подобную вещь! А для вордпреса сделаешь скрипт и мануал по установке! Буду очень благодарен!