【发布时间】:2012-02-04 23:21:00
【问题描述】:
我需要知道用户是否选择了下载然后单击了取消按钮,这与 readfile 有错误不同。我检查了 readfile 函数返回的计数,但即使用户从“另存为”对话框取消下载,它也会显示文件中的字节数。
需要这样做的原因是因为我的网站有一次性下载,其中成员允许其他用途一次下载他们的文件,然后该权限就消失了。但是,如果成员单击下载按钮然后决定不立即下载它,我不希望我的数据库得到更新以显示他们获得了文件。
这涉及知识产权保护,因为文件是上传它们的成员的财产,我需要对其他成员下载文件的确切内容进行审计跟踪,以防它们开始在互联网上传播。但如果 readfile 函数总是反映文件大小(意味着这些字节以某种方式传输),我无法知道文件是否实际下载。
我看过很多关于这个主题的帖子,但是对于经常需要的问题没有真正的解决方案 - 他们是否下载了它?仅仅知道他们点击了下载按钮并不能真正说明他们是否决定继续下载,因为“另存为”对话框允许某人取消下载的实际完成。
为了完整起见,这是我在 readfile 函数之前的下载代码:
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header("Content-Disposition: attachment; filename=$download_name");
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize("sub/$doc_file"));
ob_clean();
flush();
$wasdownloaded = readfile("sub/$doc_file");
【问题讨论】: