程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php防盜鏈幾種代碼

php防盜鏈幾種代碼

編輯:關於PHP編程

我們這裡講述的防盜鏈代碼只專注於php的解決方案,當然如果你有服務器管理權限或htaccess文件操作我建義不要用php防盜鏈哦。

先來看個最簡單的
下面是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
/**
* @author seraphim
* @copyright 2012
*/
$ADMIN = array(
'defaulturl'=> 'http://www.xx.com/images/banner-header.gif', //盜鏈返回的地址
'url_1' => 'http://www.xx.net/file',
'url_2' => 'http://www.xx.net/file1',
);
$okaysites = array(
'http://box.baidu.com',
'http://tieba.baidu.com/p/1493336008', //白名單
'http://www.xx.com/1.html',
);
$reffer = $_SERVER['HTTP_REFERER'];
if ($reffer) {
$yes = 0;
while (list($domain, $subarray) = each($okaysites)) {
if (ereg($subarray, "$reffer")) {
$yes = 1;
}
}
$theu = 'url_' . $_GET['site'];
$file = $_GET['file'];
if ($ADMIN[$theu] and $yes == 1) {
header("Location: $ADMIN[$theu]/$file");
} else {
header("Location: $ADMIN[defaulturl]");
}
} else {
header("Location: $ADMIN[defaulturl]");
}
print_r($_SERVER['HTTP_REFERER']);
?>

實例3 [支持白名單二]

 代碼如下 復制代碼

<?php

$ADMIN[defaulturl] = "http://www.bKjia.c0m/404.htm";//盜鏈返回的地址
$okaysites = array("http://www.bKjia.c0m/","http://bKjia.c0m"); //白名單
$ADMIN[url_1] = "http://www.bKjia.c0m/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]");
}

?> 

還有很多的方法來實現防盜鏈本文章只講到了利用php實現,像有些站生成了html這樣做起來就不怎麼方便了,我們可以在iis,apache,htaccess來操作。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved