當前位置: 首頁> 最新文章列表> PHP 中unserialize 函數是乾什麼用的?帶你快速了解其基本用法

PHP 中unserialize 函數是乾什麼用的?帶你快速了解其基本用法

gitbox 2025-09-25

<?php /** * PHP 中unserialize 函數是乾什麼用的?帶你快速了解其基本用法* * 在PHP 編程中,我們經常會遇到需要存儲複雜數據結構(如數組、對像等)到文件或數據庫的場景。 * 這時,PHP 提供了serialize() 和unserialize() 兩個非常實用的函數。 * * 一、unserialize 函數簡介* * unserialize() 函數的作用是將通過serialize() 序列化後的字符串重新轉換成PHP 的原始數據類型。 * 簡單來說,它是serialize() 的“逆操作”。 * * 函數原型: * mixed unserialize ( string $str [, array $options = [] ] ) * * 參數說明: * 1. $str:必需,要反序列化的字符串。 * 2. $options:可選,目前主要用於允許反序列化的類列表,增強安全性。 * * 返回值: * 成功返回序列化前的數據類型(數組、對象、字符串等),失敗返回FALSE。 * * 二、基本用法示例*/ // 示例1:反序列化數組 $serializedArray = 'a:3:{i:0;s:4:"PHP!";i:1;s:3:"123";i:2;s:6:"hello!";}' ; $array = unserialize ( $serializedArray ); echo "
"
; print_r ( $array ); echo " " ; // 輸出結果: // Array // ( // [0] => PHP! // [1] => 123 // [2] => hello! // ) // 示例2:反序列化對象 class User { public $name ; public $age ; } $serializedObject = 'O:4:"User":2:{s:4:"name";s:4:"John";s:3:"age";i:25;}' ; $user = unserialize ( $serializedObject ); echo "
"
; print_r ( $user ); echo " " ; // 輸出結果: // User Object // ( // [name] => John // [age] => 25 // ) /** * 三、unserialize 的安全注意事項* * unserialize 在處理來自不可信來源的數據時非常危險,因為它可能觸發對象注入攻擊。 * 攻擊者可以通過精心構造的序列化字符串執行任意代碼。 * * 安全建議: * 1. 盡量避免反序列化用戶提供的數據。 * 2. 使用allowed_classes 參數限制可反序列化的對像類。 * 3. 對數據來源進行嚴格驗證和過濾。 * * 四、總結* * - unserialize() 用於將序列化字符串還原成原始PHP 數據。 * - 與serialize() 配合,可以方便地存儲和傳輸複雜數據。 * - 使用時務必注意安全問題,尤其是在處理外部數據時。 * * 掌握了unserialize(),你就能更靈活地在PHP 中處理數據持久化和對象存儲了。 */ ?> <?php // 文章後的無關PHP代碼 $footer = "這裡是文章後的尾部無關代碼" ; echo $footer ; ?>