Регистрация загрузок изображений - PullRequest
0 голосов
/ 16 сентября 2008

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

Ответы [ 5 ]

1 голос
/ 16 сентября 2008

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

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

download.php

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

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

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

0 голосов
/ 19 сентября 2008

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

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

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

0 голосов
/ 16 сентября 2008

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

0 голосов
/ 16 сентября 2008

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

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

0 голосов
/ 16 сентября 2008

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...