假設我的網站是 a.com 有圖片a.com/123.png
b.com 使用該圖片的時候 http_referer 是?
然後直接在地址欄輸入a.com/123.png http_referer 是b.com
我想問的是怎麼判斷圖片是其它站被引用還是使用者直接存取?
回複討論(解決方案)
Request.ServerVariables["HTTP_REFERER"]
Request.ServerVariables["HTTP_REFERER"].ToString().Contains(Request.ServerVariables["HTTP_HOST"].ToString())
在外鏈點進去的時候 HTTP_REFERER也帶著這個網站的主機地址呢
加個IF語句來判斷。然後tostring解析到地址,就可以用計數器判斷了
直接瀏覽器輸入 HTTP_REFERER 為空白
從頁面連結過來 HTTP_REFERER 為那個頁面的url
但是需要注意的是,所有有 HTTP_ 首碼的變數都是訪問方提供的,可靠性極低
你只能靠HTTP_REFERER來判斷,雖然這個不是很靠譜可以偽造。
Request.ServerVariables["HTTP_REFERER"]
Request.ServerVariables["HTTP_REFERER"].ToString().Contains(Request.ServerVariables["HTTP_HOST"].ToString())
在外鏈點進去的時候 HTTP_REFERER也帶著這個網站的主機地址呢
加個IF語句來判斷。然後tostring解析到地址,就可以用計數器判斷了
有沒有PHP版本的大俠
$_SERVER['HTTP_REFERER']裡面
至於裡面參數好像有點多。打出來慢慢看。
樓主說的這個問題就是盜鏈啊。
header("content-type:text/html; charset=utf-8");
if(isset($_SERVER['HTTP_REFERER'][
])){
//判斷$_SERVER['HTTP_REFERER'是不是以http://localhost/test/為開頭的
//如果是,則說明是本網站,如果不是,則說明不是本網站,
if(strpos($_SERVER['HTTP_REFERER'],"http://localhost/test/")==0){
echo '這是本站訪問';
}else{
//跳轉到警告頁面
header('Location:warning.php');
}
}else{
//跳轉到警告頁面
header('Location:warning.php');
}
以上這段代碼是我自己寫的一段反盜鏈的代碼。你的問題,一看這段代碼就能夠解決。在傳智播客韓順平php系列視頻中的第84講就講到了這個反盜鏈的問題。可以更清楚的瞭解了。