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().

После успешного восстановления объекта модуль igbinary автоматически попытается вызвать методы __unserialize() или __wakeup(), если десериализуемое значение — объект (object) и методы определили в классе.

Замечание: Директива unserialize_callback_func

Callback-функция, которую указали в директиве unserialize_callback_func, вызывается при десериализации неопределённого класса. PHP создаст объект __PHP_Incomplete_Class, если 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.

Смотрите также

Добавить

Примечания пользователей 1 note

up
0
olliejones at gmail dot com
13 hours ago
This little function returns true if a data string was made by igbinary_serialize() and can be passed to igbinary_unseriaize().

function is_igbinary($data) {
return is_string($data) && '00000002' === bin2hex(substr($data, 0, 4));
}

It doesn't validate the contents of the data string, or ensure it is safe to decode if it came from an untrusted source. But it is handy when trying to avoid unserializing data that wasn't serialized.
To Top