0

我正在尝试找到一种方法来找出谁在从图片库下载什么图片。用户可以使用缩略图旁边的按钮或右键单击并使用“将链接另存为”进行下载 是否可以将用户会话或 ID 与使用 PHP 或 JavaScript 的所有浏览器的“链接另存为”操作相关联。

4

5 回答 5

1

是的,我首选的方法是通过 PHP。您必须设置一个脚本来加载文件并将其发送到用户浏览器。该脚本还可以在某处(例如您的数据库)记录下载。

例如 - 在非常粗糙的伪代码中:

下载.php

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

然后,您只需将下载链接指向 download.php,而不是实际文件。(请注意,当然,updateFileCount 和 sendFile 是您必须提供的函数 -此脚本是您可以使用的下载脚本示例)

注意:我强烈建议避免使用 $_GET['file'] 来获取整个文件名 - 恶意用户可以使用它从您的 Web 服务器中检索敏感文件。但是安全使用 PHP 下载是另一个问题的话题。

于 2008-09-16T09:19:43.483 回答
0

I agree strongly with the suggestion put forward by Phill Sacre. For what you are looking for this is the way to go.

It also has the benefit of being potentially able to keep the tracked files out of the direct web path so that they can't be direct linked to.

I use this method in a client site where the images are paid content so must be restricted access.

于 2008-09-18T20:31:38.890 回答
0

您需要一个网关脚本,例如 ImageDownload.php?picture=me.jpg 或类似的东西。

该页面将返回图像字节,并记录下载图像。

于 2008-09-16T09:14:32.450 回答
0

因为要保存的图像在本地计算机上,所以无法获取此类信息,因为他们已经从您的系统中检索了图像。即使使用 javascript,我知道你可以做的最好的事情是在用户每次按下第二个鼠标按钮时使用某种 ajax'y 的东西进行记录。

我不太喜欢这个想法,但是如果您想在每次有人下载图像时都记录下来,您可以将图像托管在 Flash 或 Java 应用程序中,这样就需要单击下载图像按钮。这样,他们获得图像而不这样做的唯一方法是在数据包进入他们身边时捕获数据包或截取屏幕截图。

于 2008-09-16T09:15:19.670 回答
0

您的服务器访问日志应该已经有对文件的非缩略图版本的请求,因此您只需修改日志格式以包含 sessionid,我认为您可以将其映射回用户。

于 2008-09-16T09:21:23.323 回答