Веб-разработка · PHP-модуль
Protected Downloads — управляемая выдача файлов с подтверждением и учётом скачиваний
Разработал PHP-модуль для сайтов, которым необходимо управлять скачиванием прайс-листов, каталогов и других документов. Вместо обычной прямой ссылки пользователь проходит предусмотренный сценарий подтверждения, получает доступ к файлу, а система фиксирует событие загрузки. Работу модуля можно проверить самостоятельно в публичной демонстрации.
Демо открывает список файлов. Презентация выдаётся самим модулем: сначала окно подтверждения, затем PDF по одноразовой ссылке.
Задача бизнеса
На корпоративных сайтах нередко размещают прайс-листы, каталоги, коммерческие предложения и технические документы.
Обычная ссылка на файл не позволяет показать условия перед скачиванием, ограничить повторное использование выданной ссылки и вести понятный учёт обращений.
Потребовался универсальный модуль, который можно подключить к существующему PHP-сайту и настроить под разные документы.
Решение
Модуль объединяет каталог доступных файлов, окно подтверждения, механизм выдачи по токенам и журналирование скачиваний.
Для каждого документа можно предусмотреть собственные параметры и пользовательские сообщения. Интерфейс адаптирован для использования с компьютера и телефона.
Как работает скачивание
- Посетитель выбирает документ в списке или переходит по прямой ссылке, которую прислал сотрудник.
- Если для документа включено подтверждение, модуль показывает окно с условиями или уведомлением. Для файлов без обязательного подтверждения скачивание начинается сразу.
- Пользователь подтверждает действие, и модуль формирует одноразовую ссылку с токеном.
- Модуль проверяет токен и состояние файла и отдаёт документ, не раскрывая его путь на сервере.
- Событие записывается в журнал. Повторный переход по той же ссылке возвращает пользователя к подтверждению.
Возможности
- Настройка документов и условий выдачи: текст уведомления, подписи кнопок, обязательность подтверждения.
- Подтверждение перед скачиванием с блокировкой кнопки от повторных нажатий.
- Одноразовые токены с ограниченным сроком действия.
- Журналирование загрузок и ошибок в CSV.
- Информативные состояния ошибок: файл не найден, временно недоступен, некорректная или уже использованная ссылка.
- Отображение даты последнего обновления файлов.
- Скрытые документы, доступные только по прямой ссылке, и временное отключение файла.
- Открытие HTML-документов прямо в браузере.
- Адаптация под мобильные устройства.
Для каких задач подходит
- Партнёрские прайс-листы и каталоги.
- Коммерческие и технические материалы.
- Документы, требующие подтверждения условий.
- Учёт интереса к скачиваемым материалам.
Техническая реализация
Модуль написан на PHP 8 (совместим с PHP 7.4+), работает без базы данных и подключается к существующему сайту. Документы описываются в массиве конфигурации: путь к файлу, отображаемое название, требование подтверждения, скрытие из списка, временное отключение, тексты и оформление кнопок, открытие HTML в браузере.
Токен формируется при показе окна подтверждения и хранится в PHP-сессии посетителя. Он действует ограниченное время и удаляется после первого использования, поэтому повторный переход по ссылке или попытка открыть её в другой сессии возвращают к подтверждению.
Каждое обращение записывается в CSV-журнал: дата, IP-адрес, ключ файла, тип события (выдача файла, отсутствующий файл, неверная ссылка и другие), путь и User-Agent. Журнал открывается в Excel или Google Sheets. Интерфейс построен на Bootstrap 5.3 и Font Awesome.
Модуль управляет выдачей ссылок и фиксирует обращения, но не защищает уже скачанный файл от дальнейшего распространения.
Результат
Разработан работающий модуль для управляемой выдачи файлов на сайте. Он позволяет использовать разные сценарии подтверждения и скачивания, контролировать повторное применение ссылок и фиксировать обращения к документам.
Решение можно оценить в публичной демонстрации: выбрать файл, пройти пользовательский сценарий и посмотреть результат.
Технологии
Сценарий скачивания
Настройки документов
Кадры из презентации модуля, демонстрационная конфигурация с тестовыми файлами.