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 ; ?>