igbinary_unserialize

(PECL igbinary >= 1.1.1)

igbinary_unserialize igbinary_serialize() によって保存されたバイナリ表現から、PHP の値を復元する

説明

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() (存在していれば) をコールしようとします。

注意: unserialize_callback_func ディレクティブ

unserialize_callback_func ディレクティブで指定したコールバックは、未定義のクラスをアンシリアライズしようとした場合にコールされます。 コールバックが指定されない場合は、__PHP_Incomplete_Class がインスタンス化されます。

戻り値

変換済の値を返します。 値の型は、 bool, int, float, string, array, object, null があり得ます。

渡された文字列が アンシリアライズ できない場合、 false が返されると共に、 E_NOTICE または E_WARNING が発生します。

エラー / 例外

アンシリアライズ を行うハンドラの中で、オブジェクトが Throwable をスローする可能性があります。

注意

警告

エラーが発生したり、 nullfalse をシリアライズしたものを アンシリアライズ しようとした場合、 null または false を返します。 この特殊ケースについては、 strigbinary_serialize(null)igbinary_serialize(false) と比較したり、 発生した E_NOTICE をキャッチすることで扱えます。

参考

add a note

User Contributed Notes 1 note

up
0
olliejones at gmail dot com
16 days 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