隐藏视频和mp3文件

时间:2009-07-31 22:14:02

标签: php security .htaccess mp3

我正在编写一个包含视频和音频文件的网站,我需要人们能够观看/收听文件,如果他们登录php / mysql登录但我不希望没有注册的人是能够下载文件,我需要能够阻止直接访问该文件,只允许用户通过帐户访问。

2 个答案:

答案 0 :(得分:1)

解决方案是不通过Apache直接提供这些文件,而是通过PHP (因为,从PHP脚本中,您知道是否记录了试图下载文件的人)

绝对确定没有人直接下载文件,至少有两种解决方案:

第一个 (我认为最好的一个):如果可以,请将这些文件放在网络服务器的根目录之外:

/.../www/               <-- this is your web root (DocumentRoot, with Apache)
/.../.../js/...
/.../.../css/...
/.../.../index.php
/.../.../download.php
/.../data/              <-- there, outside of the files served by Apache, you put your data
/.../data/my-music.mp3

第二个:您在“data”目录中使用.htaccess文件,拒绝任何人通过Apache访问;这样的事情可能会这样做:

Deny From All


然后,您的download.php脚本(或等效的)将获取文件的ID,检查用户的访问权限,以及用户是否有权访问所请求的文件:

  • 发送正确的HTTP header
    • 您可能希望至少设置Content-Type
    • 也许还有其他一些内容,例如Content-disposition,Content-length,......
  • 发送文件的内容
    • 类似readfile的内容可能有助于; - )

当然,由您来保护该脚本,现在; - )


作为旁注:主要缺点是PHP必须处理更多东西......可能会给服务器增加一些负担: - (

答案 1 :(得分:0)

我同意斯科特。 Flash可能是要走的路 - 绝大多数人都安装了Flash插件。还有Java,但我的经验是使用Flash。

我对你的问题有些不确定,所以让我澄清一下我的回答。您既可以提供流式传输音频和视频的方式,也可以提供自行下载文件的方式。通过流媒体,我的意思是您的网站上有一个播放音频和视频的Flash查看器,但不会将它们保存到硬盘驱动器中。您可以向注册用户和访客提供此功能。您也可以(如果您愿意)让注册用户下载文件。

您可以让用户和访客观看您的内容,并让注册用户下载该内容作为注册奖励。也许你不想这样做 - 也许你只是想让注册用户观看你的东西而不是下载它。这也可以做到。

Flash有两种播放音频和视频的选项 - 渐进式和流式传输。渐进式是flash从网址播放音频/视频文件(即http://www.example.com/video/video_1.flv)。 Flash下载视频(就像浏览器一样)并播放它。下载的文件存储在浏览器的缓存中。这不是你想要的。

流媒体由NetStream和NetConnection类完成。这是文件的真正流式传输,它不会保存到硬盘驱动器中。流类不使用HTTP而是使用RTMP,因此您需要一个Flash音频/视频服务器以及您的网络服务器。

我知道有三种Flash视频服务器 - Adob​​e自己的Flash Media Server,Wowza和Red 5。

Adob​​e的服务器价格昂贵,如果这是一个非商业网站,可能太贵了。

我使用Wowza。对于10个并发用户来说是免费的(为了让你的脚湿透)并且还有一个无限制的连接服务器,虽然在1000美元的美元,对于非商业网站来说也太贵了。

第三个是Red5。这是一个完全免费的开源Flash媒体服务器。我没有这方面的经验,所以我无法证明它的功能或稳定性。

所以是的,不幸的是,它比一些简单的PHP和HTML更有用。您可以构建自己的Flash播放器(客户端查看器),也可以使用其他人构建的Flash播放器。