2009-07-31 92 views
0

我编码的网站有视频和音频文件,我需要人们能够观看/收听这些文件,如果他们登录在php/mysql登录但我不想要避风港的人注册为能够下载文件,我需要能够阻止对文件的直接访问,并且只允许用户使用帐户访问它们。隐藏视频和MP3文件

回答

0

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

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

你可以让用户和客人看你的东西,并为注册用户提供下载的能力,作为奖励注册。也许你不想这样做 - 也许你只是想让注册用户看到你的东西,但不会下载它。这也可以做到。

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

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

有,我知道的三种闪光视频服务器 - Adob​​e的自己的Flash媒体服务器Wowza和Red 5

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

我使用Wowza。它对10个并发用户是免费的(让你的脚湿),也有无限的连接服务器,尽管价格为1000美元,但对于非商业网站而言,它太昂贵了。

第三个是Red5。这是一款完全免费的开源闪存媒体服务器。我没有这方面的经验,所以我无法证实它的特点或稳定性。

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

1

解决方法是不直接通过Apache为这些文件提供服务,而是通过PHP (例如,从PHP脚本中,您知道是否尝试下载该文件的人是否已登录)

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

第一个(最好的一个,我认为):如果你可以把这些文件外您的Web服务器的根目录:

/.../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 

第二个:您在‘数据’目录使用.htaccess文件,拒绝来自通过Apache人的访问权限;这样的事情可以做:

Deny From All 


然后,您的download.php脚本(或同等)将获得文件的ID,请检查用户的访问权限,而且,如果用户访问所需的文件:

  • 发出正确的HTTP header S:
    • ,你可能会想至少要设置Content-Type的
    • 也许有些其他类似内容处置,内容长度,...
  • 发送文件的内容

当然,这取决于您是否确保该脚本,现在;-)


一点题外话:主要缺点是,更多的东西必须由PHP处理...可能会增加一些负载服务器:-(

+0

它适用于下载,但我想播放该网站上的文件,有没有办法做到这一点,或者我必须强制下载它? – Scott 2009-07-31 23:15:53