php實戰開發資料匯總,php網站開發實例

本文目錄一覽:

PHP典型模塊與項目實戰大全:PHP文件下載的原理及實現

  PHP文件下載的原理及實現

通常文件下載過程是十分簡單的 建立一個鏈接指向到目標文件就可以了 例如下面的鏈接

a href=// xxx /xxx rar點擊下載文件/a

但是 實際情況可能會稍複雜 比如需要用戶填寫完整註冊信息後才可以下載該文件 這時最先想到的是使用Redirect的方式 下面介紹兩種方式

( )用Redirect方式 先檢查表格是否已經填寫完畢和完整 然後將鏈接指到該文件 這樣用戶就可以下載 請看下面的示例代碼

?php

/*文件功能 檢查變數form是否完整*/

if($form){

//重新定向瀏覽器指向

Header( Location: // // xxx /xxx rar )

exit;

}

?

( )根據下載文件的序號來查找 鏈接的形式如下

a href= // xxx /download php?id= 點擊下載文件/a

上面的鏈接使用ID方式接收要下載文件的編號 然後再用Redirect的方式連接到真實的文件鏈接

以上這兩種方法雖然實現了文件的下載功能 但是缺點是直接暴露了文件所屬的路徑 而且沒有防盜鏈的功能 所以上面的方式是簡單直接但存在安全隱患的文件下載方式 在PHP中 通常是利用header()函數和fread()函數來實現安全的文件下載

例如 需要下載的是一個文件名為xxx rar的文件 首先創建文件是download php的PHP文件 通過前面的例子很容易通過文件的ID號從資料庫中得到待下載文件的真實位置 在獲得文件的真實存儲位置後 可以通過header()函數的location參數直接重定向到這個文件 但是這樣仍然是不安全的 因為某些下載軟體還是可以通過重定向分析獲得該文件的位置信息 因此需要用另外一種方法 就是PHP的文件處理API函數 它是通過fread()函數把文件直接輸出到瀏覽器提示用戶下載 這樣所有的處理都是在伺服器端完成的 因此用戶就無法獲得文件具體存儲位置信息的 示例代碼如下

?

$file_name = xxx rar ;     //下載文件名

$file_dir = /up/ ;        //下載文件存放目錄

//檢查文件是否存在

if (! file_exists ( $file_dir $file_name )) {

echo 文件找不到 ;

exit ()

} else {

//打開文件

$file = fopen ( $file_dir $file_name r )

//輸入文件標籤

Header ( Content type: application/octet stream )

Header ( Accept Ranges: bytes )

Header ( Accept Length: filesize ( $file_dir $file_name ) )

Header ( Content Disposition: attachment; filename= $file_name )

//輸出文件內容

//讀取文件內容並直接輸出到瀏覽器

echo fread ( $file filesize ( $file_dir $file_name ) )

fclose ( $file )

exit ()

}

?

【代碼解讀】

上述代碼中 程序發送Header信息是用來告訴Apache和瀏覽器下載文件的相關信息的 content type的含義代表文件MIME類型是文件流格式 如果在Apache配置裡面把文件的MIME類型設為application/octet stream(如add application/octet stream xxx rar) 那麼瀏覽器(客戶端)就會知道 這是一個文件流格式的文件並提示用戶下載 Accept Ranges是一個響應頭標 它允許伺服器指明將在給定的偏移和長度處 為資源組成部分的接受請求 該頭標的值被理解為請求範圍的度量單位 Content Length是指定包含於請求或響應中數據的位元組長度 例如 Content Length: Content Disposition:attachment是用來告訴瀏覽器 文件是可以當做附件被下載 下載後的文件名稱為$file_name該變數的值

運行download php文件 效果如圖 所示 從圖中可以看到文件按照預想的方式被提示下載 單擊 保存 按鈕將文件保存在本地

圖   PHP文件安全下載

       返回目錄 PHP典型模塊與項目實戰大全

       編輯推薦

       Java Web開發詳解

       PHP Web開發學習實錄

lishixinzhi/Article/program/PHP/201311/21519

哪裡能找到php開發實戰教程?

可以去PHP100裡面去找視頻看,好多資料在這個網站裡面也可以下載到的

一邊看一邊自己動手實踐,進步很快的

PHP開發主要學哪些?

HTML+CSS是基礎,可以學習JS、Jquery框架,然後學習PHP基本語法以及學習 Mysql 語句,慕課網實戰有相關的課程

原創文章,作者:BKVMP,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/324724.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
BKVMP的頭像BKVMP
上一篇 2025-01-13 13:23
下一篇 2025-01-13 13:23

相關推薦

  • Python生成隨機數的應用和實例

    本文將向您介紹如何使用Python生成50個60到100之間的隨機數,並將列舉使用隨機數的幾個實際應用場景。 一、生成隨機數的代碼示例 import random # 生成50個6…

    編程 2025-04-29
  • Django框架:從簡介到項目實戰

    本文將從Django的介紹,以及如何搭建Django環境開始,逐步深入到Django模型、視圖、模板、表單,最後通過一個小型項目實戰,進行綜合性的應用,讓讀者獲得更深入的學習。 一…

    編程 2025-04-28
  • 鍵值存儲(kvs):從基礎概念到實戰應用

    本文將從基礎概念入手,介紹鍵值存儲(kvs)的概念、原理以及實戰應用,並給出代碼實現。通過閱讀本文,您將了解鍵值存儲的優缺點,如何選擇最適合的鍵值存儲方案,以及如何使用鍵值存儲解決…

    編程 2025-04-28
  • 如何在dolphinscheduler中運行chunjun任務實例

    本文將從多個方面對dolphinscheduler運行chunjun任務實例進行詳細的闡述,包括準備工作、chunjun任務配置、運行結果等方面。 一、準備工作 在運行chunju…

    編程 2025-04-28
  • Python編程實戰:用Python做網頁與HTML

    Python語言是一種被廣泛應用的高級編程語言,也是一種非常適合於開發網頁和處理HTML的語言。在本文中,我們將從多個方面介紹如何用Python來編寫網頁和處理HTML。 一、Py…

    編程 2025-04-28
  • Webrtc音視頻開發React+Flutter+Go實戰PDF

    本文將從多個方面介紹如何使用React、Flutter和Go來進行Webrtc音視頻開發,並提供相應的代碼示例。 一、Webrtc音視頻開發介紹 Webrtc是Google開發的一…

    編程 2025-04-27
  • Python自動化交易實戰教程

    本教程將詳細介紹使用Python進行自動化交易的方法,包括如何選擇優秀的交易策略、如何獲取市場數據、如何實現策略並進行回測,以及如何使用Python自動化下單,並進行實盤交易,讓您…

    編程 2025-04-27
  • Python存為JSON的方法及實例

    本文將從以下多個方面對Python存為JSON做詳細的闡述。 一、JSON簡介 JSON(JavaScript Object Notation)是一種輕量級的數據交換格式,易於人閱…

    編程 2025-04-27
  • Python開源量化系統的全面介紹和應用實戰

    本文將從多個方面對Python開源量化系統進行介紹,並通過實例講解其應用。通過本文的閱讀,您將了解量化交易的概念、Python的量化工具、各種策略的實現方法以及回測與回溯分析等知識…

    編程 2025-04-27
  • Python讀取同花順日線數據實戰

    本篇文章將以「Python讀取同花順日線數據」為主題,介紹如何使用python語言從同花順網站上獲取股票日線數據。通過該實戰,讀者可以學習到如何使用Python進行網頁數據抓取、數…

    編程 2025-04-27

發表回復

登錄後才能評論