代码之家  ›  专栏  ›  技术社区  ›  Scott

隐藏视频和MP3文件

  •  0
  • Scott  · 技术社区  · 15 年前

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

    2 回复  |  直到 15 年前
        1
  •  0
  •   Jake    15 年前

    我同意斯科特的观点。Flash可能是一个不错的选择——绝大多数人都安装了Flash插件。还有Java,但我的经验是Flash。

    我对你的问题有点不确定,所以让我澄清一下我的回答。您既可以提供音频和视频流的方式,也可以自己下载文件。通过流媒体,我的意思是在你的网站上有一个Flash浏览器,可以播放音频和视频,但不能将它们保存到硬盘上。您可以向注册用户和来宾提供此服务。您也可以(如果愿意)让注册用户下载这些文件。

    您可以让用户和客人观看您的资料,并为注册用户提供下载该资料的能力,作为注册的奖励。也许你不想这样做——也许你只是想让注册用户看你的东西,而不是下载它。这也可以做到。

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

    流式处理由netstream和netconnection类完成。这是文件的真实流式处理,不会保存到硬盘。流媒体类不使用HTTP,而是使用RTMP,因此您需要一个Flash音频/视频服务器和您的Web服务器。

    我知道有三个Flash视频服务器——Adobe自己的Flash媒体服务器Wowza和Red5。

    Adobe的服务器很贵,如果这是一个非商业网站,可能会太贵。

    我用WOWZA。它对10个并发用户是免费的(让你的脚湿透),而且还有一个无限的连接服务器,尽管以1000美元的价格,它对于非商业站点来说太贵了。

    第三个是红色5。这是一个完全免费的开源闪存媒体服务器。我没有这方面的经验,所以我不能证明它的特性或稳定性。

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

        2
  •  1
  •   Pascal MARTIN    15 年前

    解决方案是不直接通过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 “data”目录中的文件,用于拒绝任何人通过Apache访问;类似的操作可能会:

    Deny From All
    


    然后,下载.php脚本 (或同等产品) 将获取文件的ID,检查用户的访问权限,如果用户有权访问请求的文件:

    • 发送正确的HTTP header S:
      • 您可能希望至少设置内容类型
      • 也许还有一些人喜欢内容配置、内容长度……
    • 发送文件内容

    当然,现在由你来保护这个脚本 ;-)


    旁注:主要的缺点是,更多的东西必须由PHP处理…可能会给服务器增加一些负载 :