Warning: Illegal string offset 'download' in /www/wwwroot/www.oilcn.net.cn/wp-content/themes/wpzt-hot/template-parts/single/single-pc.php on line 4

网站源码禁止下载 迅雷下载地址(禁止x爱2迅雷下载)

35次
2021-06-26

详解PHP避免盗链避免迅雷下载的方式

更新时间:2017年04月26日 09:22:33 作者:资源共享

本篇文章主要介绍了解析PHP避免盗链避免迅雷下载的方式,小编认为挺不错的,现在分享给你们,也给你们做个参考。一起追随小编进来瞧瞧吧

防止盗链:

网站源码禁止下载 迅雷下载地址(禁止x爱2迅雷下载) (https://www.oilcn.net.cn/) 综合教程 第1张

原理:当服务器要我们下载文件的时侯,我们会领到一个链接网站源码禁止下载 迅雷下载地址,然后我们通过这个链接找到这个文件,然后将它下载下去。那么也就是说这个链接务必要有的,那么怎么避免盗链呢?那就是给你的链接并不是真正的文件链接了。这一点很容易想起,那么不给你真正的链接又如何使你下载文件呢?

我们在用php做网页的时侯,总是会把php代码穿插在HTML代码后边,然后用php去生成剩下的代码,然后传给客户端,也就是说客户端会接受至我们php脚本运行的结果。也就是说:如果我的php脚本运行的结果就是你要下载的文件。这样我们就实现了文件防盗链。就是说你能得到的链接就是这个php文件,然后再由这个百变php文件弄成你想要的文件来供你下载。

代码如下:

$FileAddress : 文件的相对路径。
$DownloadName : 文件下载到客户端的名字。
if(file_exists($FileAddress) && $file=fopen($FileAddress,'r')) { //首先要判断文件是否存在,如果文件跟本不存在的话,后边的代码也是白费。
 Header('content-type:application/octet-stream'); //声明文件类型,这里是为了让客户端下载它,而不是打开它,所以声明为未知二进制文件。否则客户端会根据其文件类型在线打开它。
 Header('content-Length:'.filesize($FileAddress)); //声明文件的大小,告诉客户端这个文件的大小,否则客户端下载的时候看不到进度。
 Header('content-disposition:attachment;filename='.$DownloadName); //声明文件名,这里就是告诉客户端它要下载的文件的名字,否则名字就会是你php文件的名字。
 echo fread($file,filesize($FileAddress)); //这里就是将加载的文件echo出来,因此这个php文件不能出现其他任何的文字,就是说这里若是出现了任何其他的输出的话都会输出到客户端下载的文件里。
 fclose($file); //最后关闭句柄。
}

网站源码禁止下载 迅雷下载地址(禁止x爱2迅雷下载) (https://www.oilcn.net.cn/) 综合教程 第2张

上边这种代码就成功的胜任了避免盗链的任务,只须要定义那两个变量就可以。那两个变量可以通过GET来获取,比如我们将文件实际链接与它的编号在数据库中做一个映射,我们只须要GET至一个文件ID即可对文件进行下载,保证了我们真实文件地址的安全。当然也可以是对文件真实链接进行加密之类的,总之就是不要讲真实链接再放入客户端可以看见的地方就好。

防止迅雷下载

其实通过上面的代码,我们没法做到链接的掩藏,并不能避免客户端用迅雷等工具对其进行下载。那么怎样做到避免用迅雷等工具下载它呢?

正如我之前所说我们可以通过各类途径来让php文件得到这个文件的路径,那么,我们只要不要将这种信息加在链接里面就好了。比如:可以通过POST来传输文件的ID,可以通过session来传输文件的ID。

网站源码禁止下载 迅雷下载地址(禁止x爱2迅雷下载) (https://www.oilcn.net.cn/) 综合教程 第3张

这就是我所说的:花式授权下载。

1.我们可以在下载的前导页写入客户端session,来存储其授权码,将文件ID也存放出来,然后再在下载的php里加入验证session的代码,这样即使客户端将连结键入迅雷下载只是没有用的。

2.我们可以在下载的前导页加入一个掩藏的表单,用POST递交给实现下载功能的php,这样也能达到避免第三方下载工具下载的目的。

总之那样的方式太多,上面两种方式提供参考,主要的思路就是将会下载文件的信息跟链接分开来网站源码禁止下载 迅雷下载地址,这样就可以达到只凭一个链接难以下载文件的目的。

以上就是本文的全部内容,希望对你们的学习有所帮助,也希望你们多多支持脚本之家。

END

发表评论