当前位置: 首页> 最新文章列表> 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 "
"</span></span><span>;
</span><span><span class="function_ invoke__">print_r</span></span><span>(</span><span><span>$array</span></span><span>);
</span><span><span>echo</span></span><span> </span><span><span>"
"
; // 输出结果: // 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 "
"</span></span><span>;
</span><span><span class="function_ invoke__">print_r</span></span><span>(</span><span><span>$user</span></span><span>);
</span><span><span>echo</span></span><span> </span><span><span>"
"
; // 输出结果: // User Object // ( // [name] => John // [age] => 25 // ) /** * 三、unserialize 的安全注意事项 * * unserialize 在处理来自不可信来源的数据时非常危险,因为它可能触发对象注入攻击。 * 攻击者可以通过精心构造的序列化字符串执行任意代码。 * * 安全建议: * 1. 尽量避免反序列化用户提供的数据。 * 2. 使用 allowed_classes 参数限制可反序列化的对象类。 * 3. 对数据来源进行严格验证和过滤。 * * 四、总结 * * - unserialize() 用于将序列化字符串还原成原始 PHP 数据。 * - 与 serialize() 配合,可以方便地存储和传输复杂数据。 * - 使用时务必注意安全问题,尤其是在处理外部数据时。 * * 掌握了 unserialize(),你就能更灵活地在 PHP 中处理数据持久化和对象存储了。 */ ?> <?php // 文章后的无关PHP代码 $footer = "这里是文章后的尾部无关代码"; echo $footer; ?>