<?php /* 使用方法:將上述代碼保存為dao4.php, 比如測試用的validatecode.rar在站點http://www.niuzen.com裡面, 則用以下代碼表示下載連接. 文件名?site=1&file=文件 例如以下URL.復制到你的站點下試試 http://www.coolcodes.cn/dao4.php?site=1&file=validatecode.rar 以上代碼測試可用 */ $ADMIN[defaulturl] = "http://www.163.com/404.htm";//盜鏈返回的地址 $okaysites = array("http://www.163.com/","http://163.com"); //白名單 $ADMIN[url_1] = "http://www.163.com/download/";//下載地點1 $ADMIN[url_2] = "";//下載地點2,以此類推 $reffer = $HTTP_REFERER; if($reffer) { $yes = 0; while(list($domain, $subarray) = each($okaysites)) { if (ereg($subarray,"$reffer")) { $yes = 1; } } $theu = "url"."_"."$site"; if ($ADMIN[$theu] AND $yes == 1) { header("Location: $ADMIN[$theu]/$file"); } else { header("Location: $ADMIN[defaulturl]"); } } else { header("Location: $ADMIN[defaulturl]"); } ?>
詳細說明:http://php.662p.com/thread-456-1-1.html
這個用php實現反而更消耗資源,建議從服務器入手, 改apache配置
下面是php實現的代碼, xxx.mp3就是你的音樂文件的實際地址, 對外傳播的時候只傳播php地址,mp3地址對外不公開
<?php
if(strpos($_SERVER['HTTP_REFERER'], 'qq.com') !== FALSE) {
header('HTTP/1.1 404 Not Found');
exit;
}
readfile('xxx.mp3');
?>
我初學php,只能幫你解釋下這個表達式的意思,至於占不占服務器帶寬,因為沒有接觸過,不了解。
readfile()函數讀入一個文件並寫入到輸出緩沖,如果“fopen wrappers”已經被激活,則在本函數中可以把 URL 作為文件名來使用。
你這個例子裡的參數$_GET['url']應該是個數組,'url'是索引,值應該是個url地址,所以結合上面readfile()函數的解釋,就是把url地址作為文件名寫入到輸出緩存。