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





Вам нужен сценарий шлюза, например 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 - это тема для другого вопроса.
В ваших журналах доступа к серверу уже должен быть запрос на версию файла без миниатюр, поэтому вам просто нужно изменить формат журнала, включив в него идентификатор сеанса, который, я полагаю, вы можете сопоставить с пользователем.
Я полностью согласен с предложением Филла Сакра. Это то, что вам нужно.
Он также имеет то преимущество, что потенциально может не допускать попадания отслеживаемых файлов в прямой веб-путь, чтобы на них нельзя было напрямую ссылаться.
Я использую этот метод на клиентском сайте, где изображения являются платным контентом, поэтому доступ к ним должен быть ограничен.