让用户只能通过密码下载视频/音频文件

时间:2015-03-03 07:56:56

标签: php mysql

我尝试创建用户可以购买视频/音频文件的商店。这些文件将放在另一台远程服务器(Debian)上。我无法弄清楚如何只为特定用户下载。我可以通过IP以某种方式计算控制和,链接将是这样的:

http://100.000.000.000/files/video.avi?hash=87a686d86d8868a6868a

但是如何在远程服务器上检查这个?我不知道用PHP脚本阅读整个电影文件是个好主意。

1 个答案:

答案 0 :(得分:1)

基本上有两种方法可行。

文件系统:

您可以使用文件系统,为每个用户创建受密码保护的文件夹,并将所有文件复制到其中,或者更好,如果您使用Linux,请使用符号链接(ln -s)。

<强> PHP:

或者您可以在检查访问权限时通过PHP流式传输文件。我认为这不是一个真正的问题。如果只是推送原始数据,PHP不需要做太多。

$total     = filesize($filepath);
$blocksize = (2 << 20); //2M chunks
$sent      = 0;
$handle    = fopen($filepath, "r");

// Push headers that tell what kind of file is coming down the pike
header('Content-type: '.$content_type);
header('Content-Disposition: attachment; filename='.$filename);
header('Content-length: '.$filesize*1024);

// Now we need to loop through the file and echo out chunks of file data
// Dumping the whole file fails at > 30M!
while($sent < $total) {
  echo fread($handle, $blocksize);
  $sent += $blocksize;
}

(代码很短,没有错误检查,没有密码检查,没有文件关闭等)

这取决于您拥有的密码系统类型以及您在服务器上可以执行的操作。