我正在编写一个包含视频和音频文件的网站,我需要人们能够观看/收听文件,如果他们登录php / mysql登录但我不希望没有注册的人是能够下载文件,我需要能够阻止直接访问该文件,只允许用户通过帐户访问。
答案 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,检查用户的访问权限,以及用户是否有权访问所请求的文件:
header
:
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视频服务器 - Adobe自己的Flash Media Server,Wowza和Red 5。
Adobe的服务器价格昂贵,如果这是一个非商业网站,可能太贵了。
我使用Wowza。对于10个并发用户来说是免费的(为了让你的脚湿透)并且还有一个无限制的连接服务器,虽然在1000美元的美元,对于非商业网站来说也太贵了。
第三个是Red5。这是一个完全免费的开源Flash媒体服务器。我没有这方面的经验,所以我无法证明它的功能或稳定性。
所以是的,不幸的是,它比一些简单的PHP和HTML更有用。您可以构建自己的Flash播放器(客户端查看器),也可以使用其他人构建的Flash播放器。