最近大家有了sinaapp的php空间,这个东西可能可以用得到,写个基本例子大家参考(大家可以二次开发)
基本功能就是最简单的referer防盗链: 1,白名单就是只允许某些来源域 2,黑名单就是不允许某些来源域
<?php
//开发调试模式:显示错误报告,但不显示通知 //error_reporting(E_ERROR | E_WARNING | E_PARSE); //上线模式:不显示任何错误报告 error_reporting(0);
//要进行判断的网站域名列表 //仅域名,全小写,注意前面不要加http:// //完全匹配,不支持通配符,需要通配符的可自行去写正则支持 $domain_list = array("", "bbs.", "www.");
//以上列表中的域名是否为黑名单,否则为白名单(默认) //白名单就是只允许这些来源域 //黑名单就是不允许这些来源域 $is_black_list = FALSE;
//是否允许空来源(默认允许),就是如果来源页为空时,允许通过,否则必须要有正确的来源地址 //比如直接打开没有referer,还有Firefox中,wmp中,可能不一定每次都有referer来源地址 $allow_empty_referer = TRUE;
//回调函数==================================================================
//成功通过验证后要调用的程序,所有要做的事写到这里面 function succeed() { echo "welcome"; }
//错误没有通过验证要调用的程序,比如返回一个错误页面,或返回一个错误信息,或一个含广告的列表 function error() { echo "error"; }
//来源页判断=============================================================== //取得访问来源的地址 $referer = $_SERVER["HTTP_REFERER"]; if($referer) { //解析来源地址 $refererhost = parse_url($referer); //来源地址的主域名 $host = strtolower($refererhost['host']); if($is_black_list) { //如果是黑名单 if (in_array($host, $domain_list)) { error(); } else { succeed(); } } else { //如果是白名单 if($host == $_SERVER['HTTP_HOST'] || in_array($host, $domain_list)) { succeed(); } else { error(); } } } else { if ($allow_empty_referer) { succeed(); } else { error(); } }
?>
|