如何禁止非会员用户访问视频/图片?

WBOY
發布: 2016-06-23 13:38:54
原創
965 人瀏覽過

容易想到的就一种:
将资源文件放到public目录之外,所有对这些资源的访问通过统一入口,比如:

http://xxx/file.php?video.mp3
登入後複製

这样做会对服务器造成很大压力吗?
有更好的方法吗?

请多多指教!


回复讨论(解决方案)

文件保存时打乱文件名,用乱码或者MD5这种东西
在数据库中保存用户id-原文件名-乱码文件名的对应关系,调用时通过原文件名,查询到乱码,然后提供下载,下载名设置成原名即可

文件保存时打乱文件名,用乱码或者MD5这种东西
在数据库中保存用户id-原文件名-乱码文件名的对应关系,调用时通过原文件名,查询到乱码,然后提供下载,下载名设置成原名即可


没太明白,下载时设置成原文件名不是和直接下载一样?是直接访问?

还有,如果用这种方法是不是就能用cdn加速?
PS:现在不能编辑自己的贴了?


文件保存时打乱文件名,用乱码或者MD5这种东西
在数据库中保存用户id-原文件名-乱码文件名的对应关系,调用时通过原文件名,查询到乱码,然后提供下载,下载名设置成原名即可


没太明白,下载时设置成原文件名不是和直接下载一样?是直接访问?



一个是重名问题,一个是不能让人猜到文件名...或者直接在服务器配置为拒绝web访问

除非你能做到让web服务器认识你的会员,不然只能这么做,效率问题我没测试过,用readfile应该是可以的,只要不是那种先一次读到内存再写入输出流的。你这么想,http访问文件,一样也是先经过了一层web服务器,损耗在所难免。

基于复杂文件名,只能防第一次,别人记录下来就可以二次使用了。

使用php去?取文件,文件放在非web能?取的目?,然後用php?出,在 php控制?限。
例如:?站的目?是 /home/www/

<?phpif(判?是否有?限){    $file = '/home/file/aaa.jpg';    echo file_get_contents($file);}?>
登入後複製

好吧,看样子都是这么做的

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!