PHP 文件上傳完整實戰:類型白名單、大小限制、隨機重命名、安全防禦與錯誤處理
前言 文件上傳是 Web 應用高風險功能點。本文提供一個生產級上傳處理流程:MIME 類型白名單 + 擴展名二次驗證 + 大小限制 + 隨機文件名防覆蓋 + 目
PHP 關聯數組遍歷完全指南:foreach、array_walk、鍵值解構與性能對比
前言 關聯數組(鍵值對集合)是 PHP 中最常用的數據結構。本文系統梳理 foreach、array_walk、for 配合 array_keys 等多種遍歷方
PHP cURL 入門:三行代碼抓取遠程頁面,從初始化到關閉完整流程
前言 cURL 是 PHP 中最強大、最常用的 HTTP 客戶端庫。本文以最簡潔的示例展示「初始化 → 設置選項 → 執行 → 關閉」的標準四步流程,並解釋每步
PHP 純 Socket 實現 HTTP 請求:底層原理與生產級 httpRequest 函數詳解
前言 在無 cURL 擴展、或需精細控制 TCP 層行為(如自定義協議、代理鏈、非阻塞 I/O)時,基於 fsockopen() / stream_socket
PHP Session 存儲對象完整指南:序列化、__sleep/__wakeup 與現代最佳實踐
前言 在 PHP 中將對象存入 $_SESSION 是實現用戶狀態保持(如購物車、權限對象、領域模型)的常用手段。本文從底層原理到現代最佳實踐,系統講解對象如何
PHP 計算目錄總大小:RecursiveDirectoryIterator 一行代碼搞定遞歸求和
前言 獲取目錄及其所有子目錄下文件的總大小,是磁盤配額統計、備份評估、存儲監控的常見需求。利用 SPL 的 RecursiveDirectoryIterator
PHP 非遞歸刪除目錄:RecursiveDirectoryIterator + CHILD_FIRST 一行遍歷搞定
前言 上一篇介紹了手動遞歸刪除目錄,本文展示 PHP SPL 提供的 非遞歸、單次遍歷 方案:RecursiveDirectoryIterator 配合 Rec
PHP 遞歸刪除整個目錄:基於 DirectoryIterator 的極簡實現
前言 在文件管理、緩存清理、臨時目錄銷毀等場景中,需要將一個目錄及其所有子目錄、文件徹底刪除。PHP 的 SPL DirectoryIterator 提供了面向
PHP 讀取網頁源碼的兩種高效方法:fopen 與 cURL 實戰對比
前言 在 PHP 中獲取遠程網頁的 HTML 源碼是常見需求,例如爬蟲、API 整合、內容聚合等。本文介紹兩種主流方案:基於 fopen() 的流式讀取與 cU
PHP 獲取文件大小與時間屬性完整指南:filesize、fileatime、filemtime、filectime 用法詳解
前言 在 PHP 開發中,經常需要讀取文件的元數據,例如文件大小、最後訪問時間、最後修改時間以及 inode 變更時間。本文將系統介紹 filesize()、f
Laravel PHP 框架安裝與環境配置完整教學(含 .env、資料庫、時區、金鑰設定)
系統需求 Web Server:Nginx / Apache PHP ≥ 7.3(Laravel 8+ 需 PHP 7.3+,Laravel 10+ 需 PH
PHP 使用 basename() 與 dirname() 分離路徑中的檔名與目錄
前言 處理檔案路徑時,常需分離**目錄部分**與**檔名部分**。PHP 提供 dirname() 與 basename() 兩個內建函數,跨平台相容(自動識別
PHP 相對目前檔案路徑 include 其他檔案
使用 __FILE__ 魔術常數取得目前腳本絕對路徑,配合 dirname() 取得目錄,實現相對路徑載入,不受執行目錄影響。 標準做法 <?php $c
PHP 不使用 copy() 以檔案讀寫方式複製檔案
手動 fopen/fread/fwrite 實作檔案複製,理解底層運作,或需在複製過程中處理資料 (加密、壓縮、過濾)。 基本實作 function copyF
PHP 使用 stream_copy_to_stream() 串流複製檔案
stream_copy_to_stream() 高效複製串流資料,不將整個檔案載入記憶體,適合大檔案複製。 函數封裝 function streamCopy($
PHP 使用 copy() 遠端檔案下載到本地
copy() 支援 URL 來源 (需 allow_url_fopen=On),可直接將遠端檔案複製到本地路徑。 基本範例 <?php $source =
PHP 登入驗證類 (Auth) 完整實作
封裝 Session/Cookie 驗證、登入、登出、記住我、IP 綁定、加密儲存等功能的 Auth 類別。注意:使用 mysql_* 已移除,實務請改用 PD