Funciones de manejo de variables
PHP Manual

unserialize

(PHP 4, PHP 5, PHP 7)

unserialize Crea un valor PHP a partir de una representación almacenada

Descripción

mixed unserialize ( string $str [, array $options ] )

unserialize() toma una única variable serializada y la vuelve a convertir a un valor de PHP.

Parámetros

str

El string serializado.

Si la variable que está siendo convertida de vuelta es un objeto, PHP intentará llamar la función miembro __wakeup() si existe) automáticamente luego de haber recontruido satisfactoriamente el objeto.

Nota: Directiva unserialize_callback_func

Es posible establecer una función-llamada de retorno la cual será llamada si una clase no definida debería ser instanciada durante el proceso de revertir la seriación(para prevenir que se reciba un object incompleto "__PHP_Incomplete_Class".) Use su php.ini, ini_set() o .htaccess para definir 'unserialize_callback_func'. Cada vez que una clase no definida deba ser instanciada, esta función será llamada. Para deshabilitar esta característica simplemente asigne un valor vacío a este parámetro.

options

Cualquier opción para unserialize(), dada como un array asociativo.

Opciones válidas
Nombre Tipo Descripción
allowed_classes mixed Puede ser un array de nombres de clases que deben ser aceptadas, FALSE para no aceptar clases, o TRUE para aceptar todas las clases. Si esta opción se define y unserialize() encuentra un objeto de una clase que no se acepta, el objeto será instanciado como __PHP_Incomplete_Class en su lugar. La omisión de esta opción es lo mismo que definirla como TRUE: PHP intentará instanciar objetos de cualquier clase.

Valores devueltos

El valor convertido es retornado, y puede ser un boolean, integer, float, string, array u object.

En caso de que el string pasado no pueda ser procesado para revertir la serialización, se devuelve FALSE y un error de tipo E_NOTICE es generado.

Historial de cambios

Versión Descripción
7.0.0 Se añadió el parámetro options.
5.6.0 Manipular los datos serializados reemplazando C: con O: para forzar la instanciación de objetos sin llamar al constructor ahora fallará.

Ejemplos

Ejemplo #1 Ejemplo de unserialize()

<?php
// Aquí usamos unserialize() para cargar los datos de sesión
// provenientes del string seleccionado desde la base de datos en el
// array $datos_sesion. Este ejemplo complementa aquel descrito con serialize().

$con  odbc_connect("bd_web""php""gallina");
$sent odbc_prepare($con"SELECT datos FROM sesiones WHERE id = ?");
$datos_sql = array($_SERVER['PHP_AUTH_USER']);

if (!
odbc_execute($sent, &$datos_sql) || !odbc_fetch_into($sent, &$tmp)) {
    
// si la ejecución del comando o la recuperación de datos falla,
    // inicializar una matriz vacía
    
$datos_sesion = array();
} else {
    
// ahora deberíamos tener los datos serializados en $tmp[0].
    
$datos_sesion unserialize($tmp[0]);
    if (!
is_array($datos_sesion)) {
        
// algo ha fallado, inicializar un array vacío
        
$datos_sesion = array();
    }
}
?>

Ejemplo #2 Ejemplo de unserialize_callback_func

<?php
$objeto_seriado
='O:1:"a":1:{s:5:"valor";s:3:"100";}';

// la directiva unserialize_callback_func está disponible a partir de PHP 4.2.0
ini_set('unserialize_callback_func''mi_llamada_de_retorno'); // defina su callback_function

function mi_llamada_de_retorno($nombre_clase)
{
    
// tan solo incluya un fichero que contenga su definición de clase
    // recibe $nombre_clase para determinar qué definición de clase requiere
}
?>

Notas

Advertencia

FALSE es devuelto tanto en el caso de un error como cuando se convierte el valor seriado FALSE. Es posible atrapar este caso especial comparando str con serialize(false) o atrapando el error E_NOTICE generado.

Advertencia

No proporcione datos no fiables provenientes del usuario a unserialize(). Revertir la serialización puede resultar en que haya código que se cargue y ejecute debido a la instanciación y autocarga de objetos, y un usuario malicioso podría ser capaz de explotar esto. Se debe utilizar un formato de intercambio de datos seguro y estándar, como JSON (a través de json_decode() y json_encode()) si es necesario pasar datos serializados al usuario.

Ver también


Funciones de manejo de variables
PHP Manual