记录图像下载

时间:2020-03-05 18:55:28  来源:igfitidea点击:

我正在尝试找到一种方法,找出谁在从图库中下载什么图像。用户可以使用缩略图旁边的按钮或者单击鼠标右键进行下载,并使用"另存为"是否可以将所有使用PHP或者JavaScript的用户会话或者ID与"另存为"操作相关联。

解决方案

回答

我们需要一个网关脚本,例如ImageDownload.php?picture = me.jpg或者类似的文件。

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

回答

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

我不太喜欢这个主意,但是如果我们每次有人下载图像时都想记录日志,则可以将图像托管在Flash或者Java应用程序中,这要求单击下载图像按钮。这样,他们不这样做就获取图像的唯一方法是捕获进入其侧面的数据包或者截取屏幕截图。

回答

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

例如,使用非常粗糙的伪代码:

download.php

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

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

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

回答

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

回答

我强烈同意菲尔·萨克雷(Phill Sacre)提出的建议。对于我们正在寻找的东西,这是要走的路。

它还具有以下优势:可以将跟踪的文件保留在直接的Web路径之外,从而使它们无法直接链接到。

我在客户站点上使用此方法,在该站点上图像是付费内容,因此必须限制访问。