有時我們希望造訪我們網站的使用者只能透過特定的連結或頁面進入我們的網站頁面,此時就需要實現防盜鏈技術。這就用到了http協定中的referer內容過濾。
例如在我們本地有一個網頁,路徑為:http://localhost/http/fdl_one.php,內容如下:
<a href="fdl_two.php">click here to see more</a>
<a href="fdl_two.php">I also want to see more</a>
<?php if(isset($_SERVER['HTTP_REFERER'])){ if(strpos($_SERVER['HTTP_REFERER'],"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,跳转到禁止访问提示页面 } ?>
值得一提的是strpos的回傳值。傳回參數2字串存在於參數1字串中起始的位置,如果沒有找到參數2,則傳回FALSE。故在使用時,應先判斷是否匹配,此時應嚴格控制返回值的類型和值,使用===符號。 (因為配對時有可能出現回傳值為0的情況!!)
真正使用中應用的更廣的是某個頁面可以透過自己的網站存取到,而不能透過其他網站跳轉進入。此時只需修改strpos函數中參數2的內容,改為自己網站的目錄名稱。即可過濾掉其他的訪問。
以上就介紹了php防盜鏈實現,包括了防盜鏈,php方面的內容,希望對PHP教程有興趣的朋友有幫助。