喜悦国际村 
» 游客:  注册 | 登录 | 搜索 | 统计 | 喜悦证交所 | 帮助

RSS 订阅当前论坛  

[北京]代朋友公司招聘PHP高级程序员多名

上一主题 下一主题
     
标题: 关于给权限下载的问题!  
 
网海小虾 (网海小虾)
新手上路
Rank: 1
一般会员



UID 27997
精华 0
积分 46
帖子 40
金钱 46 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2004-4-22
来自 湖北
状态 离线
关于给权限下载的问题!

各位大虾好~请教一个困扰已久的问题……
我这里有一些文件,是PDF档的,要求用户登录以后才可以下载,我的实现方法是:用一个校验页面检查用户是否登录,如果合法则重定向到相应的下载文档,不合法则不提供下载。但这样有个漏洞,就是如果用户直接输入最终的文件地址(比如说我这里放在根目录下的Spec中,如果用户直接输入www.xxx.com/spec/xxx.pdf),这样就可以绕过校验页面直接下载,不得已我只有隐藏文件的最终地址,但这并不是一个好办法,只是不得已而为之。不能对最终的文件加密,在达到文件的路径上面加密始终没有用。我也想过把PDF直接放入数据库里面去,下载的时候从数据库里面读,但这样似乎很麻烦。请问有没有更好的办法?可以给我讲一下么?先谢谢了!
2006-5-19 02:51 PM#1
查看资料  发短消息  QQ  顶部
 
瞎逛悠
高级会员
Rank: 4
无欲则刚


UID 64733
精华 0
积分 559
帖子 229
金钱 559 喜悦币
威望 0
人脉 0
阅读权限 50
注册 2005-6-14
状态 离线
[推荐阅读] 写了个分页类,不知道问题出在哪,高手帮帮我看一下
直接读取文件,而不是地址
if(isset($_SESSION["username"]))
{
  if (!file_exists(xxxx)){
     echo "文件找不到";
     exit;
   } else {
  $file = fopen("xxxx","r");
  Header("Content-type: application/octet-stream");
  Header("Accept-Ranges: bytes");
  Header("Accept-Length: ".filesize(xxxx)")
  Header("Content-Disposition: attachment; filename=xxxx);
echo fread($file,filesize(xxxx));
  fclose($file);
  exit;
}else{
  echo "没有登陆,无权限下载";
  exit;
}




person help person.
2006-5-19 03:04 PM#2
查看资料  Blog  发短消息  顶部
 
fnet
高级会员
Rank: 4
**村大队书记



UID 65788
精华 0
积分 718
帖子 785
金钱 718 喜悦币
威望 0
人脉 0
阅读权限 50
注册 2005-8-12
状态 离线
[推荐阅读] 如何用变量表示方法名?


QUOTE:
原帖由 瞎逛悠 于 2006-5-19 03:04 PM 发表
直接读取文件,而不是地址
if(isset($_SESSION))
{
  if (!file_exists(xxxx)){
     echo "文件找不到";
     exit;
   } else {
  $file = fopen("xxxx","r");
  Hea ...
不错




JAVA
2006-5-20 09:28 AM#3
查看资料  访问主页  发短消息  QQ  顶部
 
网海小虾 (网海小虾)
新手上路
Rank: 1
一般会员



UID 27997
精华 0
积分 46
帖子 40
金钱 46 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2004-4-22
来自 湖北
状态 离线
[推荐阅读] 前一段时间,用PHP封装了MTIR的用法,值得分享(原创)!!
谢了~

呵呵,多谢大哥!这样可以有效地隐藏地址,避免无权限下载的问题。再请教一下,如果我要给我的www目录下的某个文件夹设置密码访问,凡是进入这个文件夹的链接都要有一个验证,直接输入地址会弹出一个密码输入框,请问这个该怎么做?是不是在文件夹下写一个脚本就可以做到还是要设置服务器?
2006-5-22 10:42 AM#4
查看资料  发短消息  QQ  顶部
 
fuyatao
新手上路
Rank: 1



UID 73855
精华 0
积分 1
帖子 1
金钱 1 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2006-5-23
状态 离线
[推荐阅读] 武汉学生PHP网络技术团队找活做了
回复 #4 网海小虾 的帖子

需要设置设置一下apache服务器。最简单的方法是将<direcotor>块中的Options Indexes FollowSymLinks MultiViews这一行注释掉就行了。假如服务器域名是http://www.***.com,你提供下载的文件在download文件夹下,这样用户在浏览器地址栏里输入http://www.***.com/download浏览器什么也显示不出来,会提示它没有权限进入该目录。直接输入http://www.***.com/download/***.pdf一样提示它没有权限。这样就只能通过验证页来下载文件。详细你可以看一下apache的参考手册上的相关介绍。
2006-5-23 06:14 PM#5
查看资料  访问主页  发短消息  顶部
     


  可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题 | 开通个人空间  


 




Powered by Discuz! 6.1.0  © 2001-2010 Comsenz Inc.
Processed in 0.022971 second(s), 6 queries

(冀ICP备05009913号) 管理员:sadly 邮箱/MSN: sadly@phpx.com QQ:824008(长隐) 清除 Cookies - - Archiver - WAP