php写的防盗链接函数

编写的这个判断主要用到了$_SERVER['HTTP_REFERER']这个变量。HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器是从哪个页面链接过来的,如果你只在浏览器地址栏输入url,那就没有$_SERVER['HTTP_REFERER']了,或者说$_SERVER['HTTP_REFERER']为空。

//防盗链域名,多个用|隔开,如:http://www.yiecho.com|http://www.6vxs.com  务必带上http:// 关闭请留空,测试时不要填写防盗链域名
define('REFERER_URL','http://www.yiecho.com/|http://yiecho.com/'); 
//判断防盗链域名
function is_referer(){
	//没有设置防盗链
    if(REFERER_URL=='') return true; 
	//部分手机浏览器没有来路
	if(empty($_SERVER['HTTP_REFERER'])){
		if(preg_match("/(iPhone|iPad|iPod|Android|Linux)/i", strtoupper($_SERVER['HTTP_USER_AGENT']))){
            return true;
		}
	}else{
	    //开始验证
        $ext = explode("|",REFERER_URL);
        for($i=0;$i<count($ext);$i++){
		    if(strpos(strtolower($_SERVER['HTTP_REFERER']),strtolower($ext[$i])) !== FALSE ){
               return true; 
            }
		}
	}
    return false;
}

使用时只要在页面上加上:

//判断防盗链
if(!is_referer()){
	 header("Location:http://www.yiecho.com");
     exit();
}

这只是一个小小的防盗链函数,如有更好的建议或者有更好的程序可以留言。

php写的防盗链接函数:等您坐沙发呢!

发表评论

表情
还能输入210个字