首頁 後端開發 php教程 詳解PHP如何防止迅雷下載的方法

詳解PHP如何防止迅雷下載的方法

Jan 03, 2018 am 11:13 AM
php 下載 迅雷

PHP如何防止迅雷下載的?本文主要介紹了詳解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 檔案分割與合併(斷點續傳)

#PHP 檔案本身操作

#簡單介紹PHP 檔案鎖定與進程鎖定

#########簡單介紹PHP 檔案鎖定與進程鎖定######## #

以上是詳解PHP如何防止迅雷下載的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 Dec 24, 2024 pm 04:42 PM

適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南

CakePHP 專案配置 CakePHP 專案配置 Sep 10, 2024 pm 05:25 PM

CakePHP 專案配置

CakePHP 日期和時間 CakePHP 日期和時間 Sep 10, 2024 pm 05:27 PM

CakePHP 日期和時間

CakePHP 檔案上傳 CakePHP 檔案上傳 Sep 10, 2024 pm 05:27 PM

CakePHP 檔案上傳

CakePHP 路由 CakePHP 路由 Sep 10, 2024 pm 05:25 PM

CakePHP 路由

討論 CakePHP 討論 CakePHP Sep 10, 2024 pm 05:28 PM

討論 CakePHP

如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 Dec 20, 2024 am 11:31 AM

如何設定 Visual Studio Code (VS Code) 進行 PHP 開發

CakePHP 快速指南 CakePHP 快速指南 Sep 10, 2024 pm 05:27 PM

CakePHP 快速指南

See all articles