<?
/* ---------------------------------------------------------------------------
PHP调用显示图片,图片格式可为:jpg、gif、bmp、png等
本程序作用与目的:隐藏服务器图片存放路径,防止盗链图片
作者:Leo Email:admin_5@126.com
调用示例:
显示本地图片:<img src="img.php?src=test.jpg" border="0" />
显示远程图片:<img src="img.php?src=http://www.***.com/logo.gif" border="0" />
--------------------------------------------------------------------------- */
$this_images_folder = "images/"; //初始化本地图片所在文件夹路径
$allow_execute = check_web(); //检查请求URL是否为本站域名
$src = trim($_GET["src"]); //获取要显示的图片路径
//如果非本站域名,则禁止输出图片,并显示默认的图片
if ( !$allow_execute or $src == "" ){
no_img();
exit;
}
if ( check_img($src) ){
//如果是本地图片
$img_url = $this_images_folder.$src;
if ( file_exists($img_url) ){
view_img($img_url); //输出显示
}else{
no_img();
}
}else{
//如果是远程图片
$img_url = $src;
view_img_http($img_url); //输出显示
}
//---------------------------------------------------------------------------
// 相关函数
//---------------------------------------------------------------------------
//读取并输出本地图片数据流
function view_img($img){
header("Content-type: image/jpeg",true);
$image = fread(@fopen($img,r),filesize($img));
echo $image;
}
//读取并输出远程 HTTP 图片数据流
function view_img_http($img){
header("Content-type: image/jpeg",true);
ob_start();
readfile($img);
$image = ob_get_contents();
ob_end_clean();
echo $image;
}
//判断调用图片的网站是否属于本站域名,如果不属于,则返回False
function check_web(){
$this_server_name = $_SERVER['SERVER_NAME'];//获取当前的域名
$this_http_referer = $_SERVER["HTTP_REFERER"];//获取来源网址,即点击来到本页的上页网址
$cmp_result = str_replace($this_server_name,"",$this_http_referer); //查找替换当前网站域名
//比较,如果结果相同,则表示非本服务器域名,反之,为本服务器域名
return ( $this_http_referer == $cmp_result ) ? false : true ;
}
//判断图片路径是本地还是远程,如果是本地,则返回True
function check_img($src){
$cmp_result = str_replace("http://","",strtolower($src));
return ( $src == $cmp_result ) ? true : false ;
}
//无图片时所显示的默认图片
function no_img( $no_img_src = "" ){
if ( trim($no_img_src) == "" ) $no_img_src = "images/no_img.jpg"; //设定默认的无图片路径
view_img($no_img_src);
}
?>
/* ---------------------------------------------------------------------------
PHP调用显示图片,图片格式可为:jpg、gif、bmp、png等
本程序作用与目的:隐藏服务器图片存放路径,防止盗链图片
作者:Leo Email:admin_5@126.com
调用示例:
显示本地图片:<img src="img.php?src=test.jpg" border="0" />
显示远程图片:<img src="img.php?src=http://www.***.com/logo.gif" border="0" />
--------------------------------------------------------------------------- */
$this_images_folder = "images/"; //初始化本地图片所在文件夹路径
$allow_execute = check_web(); //检查请求URL是否为本站域名
$src = trim($_GET["src"]); //获取要显示的图片路径
//如果非本站域名,则禁止输出图片,并显示默认的图片
if ( !$allow_execute or $src == "" ){
no_img();
exit;
}
if ( check_img($src) ){
//如果是本地图片
$img_url = $this_images_folder.$src;
if ( file_exists($img_url) ){
view_img($img_url); //输出显示
}else{
no_img();
}
}else{
//如果是远程图片
$img_url = $src;
view_img_http($img_url); //输出显示
}
//---------------------------------------------------------------------------
// 相关函数
//---------------------------------------------------------------------------
//读取并输出本地图片数据流
function view_img($img){
header("Content-type: image/jpeg",true);
$image = fread(@fopen($img,r),filesize($img));
echo $image;
}
//读取并输出远程 HTTP 图片数据流
function view_img_http($img){
header("Content-type: image/jpeg",true);
ob_start();
readfile($img);
$image = ob_get_contents();
ob_end_clean();
echo $image;
}
//判断调用图片的网站是否属于本站域名,如果不属于,则返回False
function check_web(){
$this_server_name = $_SERVER['SERVER_NAME'];//获取当前的域名
$this_http_referer = $_SERVER["HTTP_REFERER"];//获取来源网址,即点击来到本页的上页网址
$cmp_result = str_replace($this_server_name,"",$this_http_referer); //查找替换当前网站域名
//比较,如果结果相同,则表示非本服务器域名,反之,为本服务器域名
return ( $this_http_referer == $cmp_result ) ? false : true ;
}
//判断图片路径是本地还是远程,如果是本地,则返回True
function check_img($src){
$cmp_result = str_replace("http://","",strtolower($src));
return ( $src == $cmp_result ) ? true : false ;
}
//无图片时所显示的默认图片
function no_img( $no_img_src = "" ){
if ( trim($no_img_src) == "" ) $no_img_src = "images/no_img.jpg"; //设定默认的无图片路径
view_img($no_img_src);
}
?>
文章来源:桂林唯创网络