+ -
当前位置:首页 → 问答吧 → 请问如何实现下载文件之前检查权限的功能?

请问如何实现下载文件之前检查权限的功能?

时间:2011-11-14

来源:互联网

开发环境:PHP,Apache

要做一个小的文件系统,里面有些ppt文件,这些文件只对会员开放,会员登录后可以自由下载,如一个文件的地址:http://www.test.com/files/example.ppt

但这个地址拿出去让匿名用户看到是无法下载的,也就是下载之前有个权限验证的功能,请问怎么实现?谢谢!

作者: sibad_sh20   发布时间: 2011-11-14

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

作者: qqmnme   发布时间: 2011-11-14

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

作者: heyli   发布时间: 2011-11-14

两位朋友好!

在防盗链没有经验,会员下载的时候用迅雷,那势必就能知道下载地址了,如果他把地址直接给别人,那别人不就也可以下载了?

请求http://www.test.com/files/example.ppt时,就需要有个验证的过程,因为数据库不是MySQL,
MySQL与Apache结合,mod-auth-mysql这个模块似乎倒是很好。

所以,再请教下,能否给个详细点的方法,非常感激!

作者: sibad_sh20   发布时间: 2011-11-14

那就我说的第二方法     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;
}
?>

作者: heyli   发布时间: 2011-11-14

该回复于2011-11-14 22:37:54被管理员删除

  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
#6楼 得分:0回复于:2011-11-14 23:55:42
用if(!isset($_SESSION[username])) 来判断当前活跃是否登录

作者: b13272012771   发布时间: 2011-11-14

最简单的办法是使用http域验证。

//发送http验证头
header('WWW-Authenticate:Basic'); 
header('HTTP/1.0 401 Unauthorized'); 

然后用$_SERVER['PHP_AUTH_USER']和$_SERVER['PHP_AUTH_PW']去数据库里检测是否存在,如果存在,就开始下载。否则发送403错误神马的随你便。

不过这个界面不太友好。

作者: belin520   发布时间: 2011-11-14