中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP如何防止盜鏈防止迅雷下載

發布時間:2021-07-30 14:35:01 來源:億速云 閱讀:134 作者:小新 欄目:開發技術

這篇文章將為大家詳細講解有關PHP如何防止盜鏈防止迅雷下載,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

防止盜鏈:

原理:當服務器要我們下載文件的時候,我們會拿到一個鏈接,然后我們通過這個鏈接找到這個文件,然后將它下載下來。那么也就是說這個鏈接必須要有的,那么如何防止盜鏈呢?那就是給你的鏈接并不是真正的文件鏈接了。這一點很容易想到,那么不給你真正的鏈接又怎樣讓你下載文件呢?

我們在用php做網頁的時候,總是會把php代碼穿插在HTML代碼中間,然后用php去生成剩下的代碼,然后傳給客戶端,也就是說客戶端會接受到我們php腳本運行的結果。也就是說:如果我的php腳本運行的結果就是你要下載的文件。這樣我們就實現了文件防盜鏈。就是說你能得到的鏈接就是這個php文件,然后再由這個百變php文件變成你想要的文件來供你下載。

代碼如下:

$FileAddress : 文件的相對路徑。
$DownloadName : 文件下載到客戶端的名字。
if(file_exists($FileAddress) && $file=fopen($FileAddress,'r')) { //首先要判斷文件是否存在,如果文件跟本不存在的話,后邊的代碼也是白費。
 Header('content-type:application/octet-stream'); //聲明文件類型,這里是為了讓客戶端下載它,而不是打開它,所以聲明為未知二進制文件。否則客戶端會根據其文件類型在線打開它。
 Header('content-Length:'.filesize($FileAddress)); //聲明文件的大小,告訴客戶端這個文件的大小,否則客戶端下載的時候看不到進度。
 Header('content-disposition:attachment;filename='.$DownloadName); //聲明文件名,這里就是告訴客戶端它要下載的文件的名字,否則名字就會是你php文件的名字。
 echo fread($file,filesize($FileAddress)); //這里就是將加載的文件echo出來,因此這個php文件不能出現其他任何的文字,就是說這里若是出現了任何其他的輸出的話都會輸出到客戶端下載的文件里。
 fclose($file); //最后關閉句柄。
}

上邊這些代碼就成功的勝任了防止盜鏈的任務,只需要定義那兩個變量就可以。那兩個變量可以通過GET來獲取,比如我們將文件實際鏈接與它的編號在數據庫中做一個映射,我們只需要GET到一個文件ID即可對文件進行下載,保證了我們真實文件地址的安全。當然也可以是對文件真實鏈接進行加密之類的,總之就是不要講真實鏈接再放到客戶端可以看到的地方就好。

防止迅雷下載

其實通過上邊的代碼,我們只能做到鏈接的隱藏,并不能防止客戶端用迅雷等工具對其進行下載。那么如何做到防止用迅雷等工具下載它呢?

正如我之前所說我們可以通過各種途徑來使php文件得到這個文件的路徑,那么,我們只要不要將這些信息加在鏈接里邊就好了。比如:可以通過POST來傳輸文件的ID,可以通過session來傳輸文件的ID。

這就是我所說的:花式授權下載。

1.我們可以在下載的前導頁寫入客戶端session,來儲存其授權碼,將文件ID也儲存進去,然后再在下載的php里加入驗證session的代碼,這樣就算客戶端將連接輸入迅雷下載也是沒有用的。

2.我們可以在下載的前導頁加入一個隱藏的表單,用POST提交給實現下載功能的php,這樣也能達到防止第三方下載工具下載的目的。

總之這樣的方法很多,上面兩種方法提供參考,主要的思路就是將要下載文件的信息和鏈接分開來,這樣就可以達到只憑一個鏈接無法下載文件的目的。

關于“PHP如何防止盜鏈防止迅雷下載”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

苏尼特左旗| 堆龙德庆县| 海林市| 罗源县| 富川| 汉沽区| 临汾市| 河津市| 镇江市| 海城市| 葫芦岛市| 嫩江县| 高雄县| 瑞丽市| 武鸣县| 上杭县| 专栏| 吉首市| 平乡县| 两当县| 太康县| 彰化市| 山东省| 榆林市| 保定市| 鄱阳县| 禹州市| 横山县| 克拉玛依市| 井冈山市| 衡山县| 永兴县| 平远县| 双流县| 军事| 同德县| 镇安县| 泌阳县| 大庆市| 大安市| 肥西县|