开发环境:PHP,Apache要做一个小的文件系统,里面有些ppt文件,这些文件只对会员开放,会员登录后可以自由下载,如一个文件的地址:http://www.test.com/files/example.ppt但这个地址拿出去让匿名用户看到是无法下载的,也就是下载之前有个权限验证的功能,请问怎么实现?谢谢!

解决方案 »

  1.   

    网上找找 防盗链啊 百度 Rewrite防盗链
      

  2.   

    有多个方法 比如
    在显示页面先检查有没有登陆 有登陆才显示对应文件路径的链接
    2
    下载地址不要直接对应着文件路径 如 download.php?id=3
    数据库表 downfile 有如下记录
    id filename
    1  example.ppt
    在 download.php页面检查有没有登陆 有 header到文件的路径 没有提示登陆
      

  3.   

    两位朋友好!在防盗链没有经验,会员下载的时候用迅雷,那势必就能知道下载地址了,如果他把地址直接给别人,那别人不就也可以下载了?请求http://www.test.com/files/example.ppt时,就需要有个验证的过程,因为数据库不是MySQL,
    MySQL与Apache结合,mod-auth-mysql这个模块似乎倒是很好。所以,再请教下,能否给个详细点的方法,非常感激!
      

  4.   

    那就我说的第二方法  download.php?id=1 这样他根本不知道他要下载的是什么文件 路径在那
    大概代码如下
    <?php 
    session_start();
    if($_SESSION["username"])   //有登陆
    {
       $id = $_GET["id"];
       $query = mysql_query("select * from table where id=".$id);
       $arr = mysql_fetch_array($query);
       header("location: ./path/$arr['filename']");}else
    {
       echo "请先登陆";
       exit;
    }
    ?>
      

  5.   

    用if(!isset($_SESSION[username])) 来判断当前活跃是否登录
      

  6.   

    最简单的办法是使用http域验证。//发送http验证头
    header('WWW-Authenticate:Basic'); 
    header('HTTP/1.0 401 Unauthorized'); 然后用$_SERVER['PHP_AUTH_USER']和$_SERVER['PHP_AUTH_PW']去数据库里检测是否存在,如果存在,就开始下载。否则发送403错误神马的随你便。不过这个界面不太友好。