首頁  >  文章  >  後端開發  >  php防盜鏈實現

php防盜鏈實現

WBOY
WBOY原創
2016-07-29 08:50:531182瀏覽

    有時我們希望造訪我們網站的使用者只能透過特定的連結或頁面進入我們的網站頁面,此時就需要實現防盜鏈技術。這就用到了http協定中的referer內容過濾。

    例如在我們本地有一個網頁,路徑為:http://localhost/http/fdl_one.php,內容如下:

<a href="fdl_two.php">click here to see more</a>
    還有另一個網頁,路徑為:http://localhost/http/fdl_three.php ,內容如下:
<a href="fdl_two.php">I also want to see more</a>
    這兩個網頁想造訪的頁面,即http://localhost/http/fdl_two.php,都是可以各自存取到的。但如果想要過濾掉fdl_three.php的訪問,即只能透過fdl_one.php的超連結進入fdl_two.php,fdl_two.php中的內容可如下:
<?php
	if(isset($_SERVER[&#39;HTTP_REFERER&#39;])){
		if(strpos($_SERVER[&#39;HTTP_REFERER&#39;],"http://localhost/http/fdl_one.php")===FALSE){
			header("Location:http_test_err.php");
		}else{
			echo "yes,you can see it now.";
		}
	}else{
		header("Location:http_test_err.php");//如果用户不是通过链接点击,此时不会有referer,跳转到禁止访问提示页面
	}
	
?>
    
    http_test_err.php存放禁止存取資訊。

    值得一提的是strpos的回傳值。傳回參數2字串存在於參數1字串中起始的位置,如果沒有找到參數2,則傳回FALSE。故在使用時,應先判斷是否匹配,此時應嚴格控制返回值的類型和值,使用===符號。 (因為配對時有可能出現回傳值為0的情況!!)

    真正使用中應用的更廣的是某個頁面可以透過自己的網站存取到,而不能透過其他網站跳轉進入。此時只需修改strpos函數中參數2的內容,改為自己網站的目錄名稱。即可過濾掉其他的訪問。


以上就介紹了php防盜鏈實現,包括了防盜鏈,php方面的內容,希望對PHP教程有興趣的朋友有幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn