igbinary_unserialize
(PECL igbinary >= 1.1.1)
igbinary_unserialize — Створює значення PHP із збереженого представлення функцією igbinary_serialize()
Опис
igbinary_unserialize(string $str): mixed
Функцияigbinary_unserialize() бере одну серіалізовану змінну з функції igbinary_serialize() і перетворить її назад на значення PHP.
Увага
Ненадійні вхідні дані користувача не повинні передаватися в igbinary_unserialize(). Десеріалізація може призвести до завантаження та виконання коду через створення екземпляра об'єкта та автозавантаження, тоді зловмисник може цим скористатися. Натомість слід використовувати безпечний стандартний формат обміну даними, такий як JSON (за допомогою функцій json_decode() і json_encode()), якщо серіалізовані дані потрібно передати клієнту.
Якщо необхідно десеріалізувати збережені ззовні серіалізовані дані, для перевірки даних можна використовувати функцію hash_hmac(). Важливо переконатись, що дані ніхто не підробив.
Увага
Формат серіалізації igbinary не дозволяє розрізняти різні групи посилань для одного і того ж значення. Всі посилання PHP на задане значення при десеріалізації обробляються як частина однієї групи посилань, навіть якщо при серіалізації вони були частинами різних груп посилань.
Список параметрів
str
Серіалізована функцією igbinary_serialize() рядок.
Якщо десеріалізоване значення є об'єктом (object), після успішного відновлення об'єкта, igbinary автоматично спробує викликати метод __unserialize() або __wakeup() (якщо такий існує).
Зауваження unserialize_callback_func directive
Можна встановити callback-функцію, яка буде викликатися, якщо під час десеріалізації повинен бути створений екземпляр невизначеного класу (щоб запобігти отриманню неповного об'єкта (object)
__PHP_Incomplete_Class
). Для определенияunserialize_callback_func можуть використовуватись файли php.ini, ini_set() або .htaccess. Щоразу, коли необхідно створити екземпляр невизначеного класу, callback-функція буде викликатися. Щоб вимкнути цю функцію, потрібно очистити параметр.
Значення, що повертаються
Повертає перетворене значення, яке може бути bool, int, float, string, array, object чи null.
Якщо переданий рядок не може бути десеріалізованим, повертається false
і видається помилка рівня E_NOTICE
або E_WARNING
Помилки
Об'єкти можуть викидати виняток Throwable у своїх оброблювачах десеріалізації.
Примітки
Увага
null
або false
повертається як у разі виникнення помилки, так і при десеріалізації серіалізованого значення null
або false
. Цей особливий випадок можна визначити, порівнявшиstr
сigbinary_serialize(null)
илиigbinary_serialize(false)
або обробивши видану помилку рівня E_NOTICE
Дивіться також
- unserialize() - Створює PHP-значення зі збереженого уявлення
- json_encode() - Повертає JSON-подання даних
- json_decode() - Декодує рядок JSON
- hash_hmac() - Генерація хеш-коду на основі ключа, використовуючи метод HMAC
- igbinary_serialize() - Створює компактне, двійкове подання значення, що зберігається
- Автоматичне завантаження класів
- unserialize_callback_func
- __wakeup()
- __serialize()
- __unserialize()