Ведение журнала загрузок изображений

Я пытаюсь найти способ узнать, кто какое изображение загружает из галереи изображений. Пользователи могут загрузить с помощью кнопки рядом с миниатюрой или щелкнуть правой кнопкой мыши и использовать «сохранить ссылку как». Можно ли связать сеанс пользователя или идентификатор с действием «сохранить ссылку как» из всех браузеров, использующих PHP или JavaScript.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
200
5

Ответы 5

Вам нужен сценарий шлюза, например ImageDownload.php? Picture = me.jpg или что-то в этом роде.

Эта страница должна возвращать байты изображения, а также регистрировать загрузку изображения.

Поскольку сохраняемые изображения находятся на их компьютере локально, у них не будет возможности получить такую ​​информацию, поскольку они уже получили изображение из вашей системы. Даже с javascript лучшее, что я знаю, что вы могли бы сделать, это регистрировать каждый раз, когда пользователь нажимает вторую кнопку мыши, используя какой-то материал ajax'y.

Мне не очень нравится эта идея, но если вы хотите регистрировать каждый раз, когда кто-то загружает изображение, вы можете размещать изображения во флэш-приложении или приложении Java, которое требует нажатия кнопки загрузки изображения. Таким образом, единственный способ получить изображение без этого - либо захватывать пакеты, когда они попадают на их сторону, либо делать снимки экрана.

Да, я предпочитаю делать это через PHP. Вам нужно будет создать сценарий, который загрузит файл и отправит его в браузер пользователя. Этот сценарий также сможет регистрировать загрузку где-нибудь (например, в вашей базе данных).

Например - очень грубым псевдокодом:

download.php

$file = $_GET['file'];
updateFileCount($file);
header('Content-Type: image/jpeg');
sendFile($file);

Тогда у вас просто будет ссылка для скачивания на download.php вместо фактического файла. (Обратите внимание, что updateFileCount и sendFile - это функции, которые вам, конечно же, придется предоставить - этот сценарий - это пример сценария загрузки, который вы могли бы использовать)

Примечание. Я настоятельно рекомендую избегать использования $ _GET ['file'] для получения полного имени файла - злоумышленники могут использовать его для получения конфиденциальных файлов с вашего веб-сервера. Но безопасное использование загрузок PHP - это тема для другого вопроса.

В ваших журналах доступа к серверу уже должен быть запрос на версию файла без миниатюр, поэтому вам просто нужно изменить формат журнала, включив в него идентификатор сеанса, который, я полагаю, вы можете сопоставить с пользователем.

Я полностью согласен с предложением Филла Сакра. Это то, что вам нужно.

Он также имеет то преимущество, что потенциально может не допускать попадания отслеживаемых файлов в прямой веб-путь, чтобы на них нельзя было напрямую ссылаться.

Я использую этот метод на клиентском сайте, где изображения являются платным контентом, поэтому доступ к ним должен быть ограничен.

Другие вопросы по теме