php防盗链,php隐藏文件真实地址实现防盗链
作者:大鹏 发布于:2006-12-11 11:36 Monday 分类:PHP&MySql
以流的方式输出,隐藏文件真实地址,可简单实现图片防盗链,也可用于其它文件的防盗链,只须作简单修改便可,不推荐大文件使用。
代码如下:
[codes=php]
<?php
//以流的方式输出,隐藏文件真实地址,可简单实现图片防盗链,也可用于其它文件的防盗链,只须作简单修改便可,不推荐大文件使用,
//show.php http://mm.bazhi.com/show.php?f=文件名 (文件名格式与下面的设置有关)
//http://mm.bazhi.com/ 八支图片网 Dir BY 迷网
//************************设置允许的域名,可自行添加elseif语句**********************************
if (preg_match ("/mm.bazhi.com/i", $_SERVER['HTTP_REFERER']))
{
print_no_permission();
}
elseif (preg_match ("/www.bazhi.com/i", $_SERVER['HTTP_REFERER']))
{
print_no_permission();
}
else
{
header("Location: /images/nothing.jpg");//如果不是允许的域名,则返回盗链提示图片,也可更改成其它文件.
exit;
}
//************************显示图片文件,其它格式文件为弹出载下**********************************
function print_no_permission()
{
//注意,下面"/4/8/58/"为虚拟主机(绝对)路径,"/upfile/"为相对主机图片路径,也就是需要隐藏的路径.
//此程序运行在linux下,window下路径格式不同此法,可能只需相对路径.
$file_dir="/4/8/58/upfile/";
//假如图片位置为"/4/8/58/upfile/abc/b/1.jpg",根据设置,应当这样引用"show.php?f=abc/b/1.jpg"
$file_name=$_GET['f'];
$file_dir = $file_dir."/";
// 输入文件标签
$file = fopen($file_dir . $file_name,"r");
Header("Content-type: application/octet-stream");
Header("Accept-Ranges: bytes");
Header("Accept-Length: ".filesize($file_dir . $file_name));
Header("Content-Disposition: attachment; filename=" . $file_name);
// 输出文件内容
echo fread($file,filesize($file_dir . $file_name));
fclose($file);
}
exit;
?>
[/codes]
标签: php
« 上一篇 考研政治--马克思主义哲学重要名词解释 | Just Walking In The Rain 下一篇»

确实是个难题。流的方式效率又低。