php擷取瀏覽器地址然後防盜鏈,重新整理後便擷取不到地址,請教是咋回事

來源:互聯網
上載者:User
php擷取瀏覽器地址然後防盜鏈,重新整理後便擷取不到地址,請問是怎麼回事啊

我的x.php代碼如下。這個代碼的大概意思是:我用一個網站引用另外一個網站的資源。
我的網站是http://www.123.com 和 http://www.abc.com
如果我輸入http://www.123.com/x.php/love.mp3,實際上開啟的是
http://www.abc.com/abc/love.mp3。下面代碼完全可以實現了。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
header("content-Type: text/html; charset=Utf-8");
$SERVER=$_SERVER["REQUEST_URI"];
preg_match("/php\/([\s\S]+)\.mp3/",$SERVER,$url);
$urlname=$url[1];
$downurl='http://www.abc.com/abc/'.$urlname.'.mp3';
header("location:$downurl");
?>
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
網頁中的播放器可以正常播放http://www.123.com/x.php/love.mp3
後來我加入了防盜鏈,防下載,代碼:
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
header("content-Type: text/html; charset=Utf-8");
$SERVER=$_SERVER["REQUEST_URI"];
preg_match("/php\/([\s\S]+)\.mp3/",$SERVER,$url);
$urlname=$url[1];
$downurl='http://www.abc.com/abc/'.$urlname.'.mp3';

$url = $_SERVER["HTTP_REFERER"]; //擷取完整的來路URL
$str = str_replace("http://","",$url); //去掉http://
$strdomain = explode("/",$str); // 以“/”分開成數組
$domain = $strdomain[0]; //取第一個“/”以前的字元
if ($domain=="www.123.com"){

header("location:$downurl");

}
if ($domain==""){
header("location:http://www.123.com/daolian.mp3");
}
if ($domain!="www.123.com"){

header("location:http://www.123.com/daolian.mp3");

}
?>
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
修改完成後,防盜鏈防下載是實現了,在網頁中的播放器播放http://www.123.com/x.php/love.mp3,卻播放不了,請問這是代碼究竟是什麼地方出了問題啊。

分享到:


------解決方案--------------------
先查一下 $_SERVER["HTTP_REFERER"] 是什麼
用 HTTP_REFERER 判斷很不靠譜的
------解決方案--------------------
最簡單的就是傳一個加密資訊,例如原來是http://www.123.com/x.php/love.mp3,現在改為http://www.123.com/x.php/love.mp3?secret=xxxxxxxxx
而這個secret是你根據一定的規則產生,外站不好偽造,並且你可以通過驗證這個secret是否你本站播放的。
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.