unserialize
(PHP 4, PHP 5, PHP 7)
unserialize — Creates a PHP value from a stored representation
Description
unserialize() takes a single serialized variable and converts it back into a PHP value.
Do not pass untrusted user input to unserialize() regardless
of the options
value of allowed_classes.
Unserialization can result in code being loaded and executed due to object
instantiation and autoloading, and a malicious user may be able to exploit
this. Use a safe, standard data interchange format such as JSON (via
json_decode() and json_encode()) if
you need to pass serialized data to the user.
If you need to unserialize externally-stored serialized data, consider using hash_hmac() for data validation. Make sure data is not modified by anyone but you.
Parameters
-
str
-
The serialized string.
If the variable being unserialized is an object, after successfully reconstructing the object PHP will automatically attempt to call the __wakeup() member function (if it exists).
Note: unserialize_callback_func directive
It's possible to set a callback-function which will be called, if an undefined class should be instantiated during unserializing. (to prevent getting an incomplete object "__PHP_Incomplete_Class".) Use your php.ini, ini_set() or .htaccess to define unserialize_callback_func. Everytime an undefined class should be instantiated, it'll be called. To disable this feature just empty this setting.
-
options
-
Any options to be provided to unserialize(), as an associative array.
Valid options Name Type Description allowed_classes mixed Either an array of class names which should be accepted, FALSE
to accept no classes, orTRUE
to accept all classes. If this option is defined and unserialize() encounters an object of a class that isn't to be accepted, then the object will be instantiated as __PHP_Incomplete_Class instead. Omitting this option is the same as defining it asTRUE
: PHP will attempt to instantiate objects of any class.
Return Values
The converted value is returned, and can be a boolean, integer, float, string, array or object.
In case the passed string is not unserializeable, FALSE
is returned and
E_NOTICE
is issued.
Changelog
Version | Description |
---|---|
7.1.0 |
The allowed_classes element of
options ) is now strictly typed, i.e. if anything
other than an array or a boolean is given,
unserialize() returns FALSE and issues an
E_WARNING .
|
7.0.0 |
The options parameter has been added.
|
5.6.0 | Manipulating the serialised data by replacing C: with O: to force object instantiation without calling the constructor will now fail. |
Examples
Example #1 unserialize() example
<?php
// Here, we use unserialize() to load session data to the
// $session_data array from the string selected from a database.
// This example complements the one described with serialize().
$conn = odbc_connect("webdb", "php", "chicken");
$stmt = odbc_prepare($conn, "SELECT data FROM sessions WHERE id = ?");
$sqldata = array($_SERVER['PHP_AUTH_USER']);
if (!odbc_execute($stmt, $sqldata) || !odbc_fetch_into($stmt, $tmp)) {
// if the execute or fetch fails, initialize to empty array
$session_data = array();
} else {
// we should now have the serialized data in $tmp[0].
$session_data = unserialize($tmp[0]);
if (!is_array($session_data)) {
// something went wrong, initialize to empty array
$session_data = array();
}
}
?>
Example #2 unserialize_callback_func example
<?php
$serialized_object='O:1:"a":1:{s:5:"value";s:3:"100";}';
ini_set('unserialize_callback_func', 'mycallback'); // set your callback_function
function mycallback($classname)
{
// just include a file containing your classdefinition
// you get $classname to figure out which classdefinition is required
}
?>
Notes
FALSE
is returned both in the case of an error and if unserializing
the serialized FALSE
value. It is possible to catch this special case by
comparing str
with
serialize(false) or by catching the issued
E_NOTICE
.
See Also
- json_encode() - Returns the JSON representation of a value
- json_decode() - Decodes a JSON string
- hash_hmac() - Generate a keyed hash value using the HMAC method
- serialize() - Generates a storable representation of a value
- Autoloading Classes
- unserialize_callback_func
- __wakeup()
English translation
You have asked to visit this site in English. For now, only the interface is translated, but not all the content yet.If you want to help me in translations, your contribution is welcome. All you need to do is register on the site, and send me a message asking me to add you to the group of translators, which will give you the opportunity to translate the pages you want. A link at the bottom of each translated page indicates that you are the translator, and has a link to your profile.
Thank you in advance.
Document created the 30/01/2003, last modified the 26/10/2018
Source of the printed document:https://www.gaudry.be/en/php-rf-unserialize.html
The infobrol is a personal site whose content is my sole responsibility. The text is available under CreativeCommons license (BY-NC-SA). More info on the terms of use and the author.
References
These references and links indicate documents consulted during the writing of this page, or which may provide additional information, but the authors of these sources can not be held responsible for the content of this page.
The author This site is solely responsible for the way in which the various concepts, and the freedoms that are taken with the reference works, are presented here. Remember that you must cross multiple source information to reduce the risk of errors.