(PHP 4, PHP 5, PHP 7, PHP 8)
unserialize — Crea un valor PHP a partir de una representación almacenada
unserialize() toma una única variable serializada y la vuelve a convertir a un valor de PHP.
No pases valores no confiables proporcionados por el usuario a unserialize() con independencia del valor dado en options
a allowed_classes
. La deserialización puede resultar en que el código sea cargado y ejecutado debido a la instanciación y autocarga de objetos, y un usuario malicioso podría ser capaz de explotar este comportamiento. Utiliza un formato de intercambio de datos estándar y seguro como JSON (mediante json_decode() y json_encode()) si necesitas pasar datos serializados al usuario.
Si necesitas deserializar datos almacenados externamente, considera utilizar hash_hmac() para verificarlos. Asegúrate de que los datos no son modificados por nadie excepto por ti.
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.
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. |
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.
Versión | Descripción |
---|---|
7.1.0 | El elemento allowed_classes de options ) es ahora estrictamente tipado, es decir: si cualquier cosa distinta de un array o un boolean es proporcionada, unserialize() retornará false y lanzará un E_WARNING . |
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á. |
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,
Ejemplo #2 Ejemplo de unserialize_callback_func
<?php
$objeto_seriado='O:1:"a":1:{s:5:"valor";s:3:"100";}';
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