Ce face serialize / unserialize
serialize păstrează exact tipurile și structura: tablouri, numere, true/false, obiecte. unserialize(string $data, array $options = []) reface valoarea originală din text. WordPress folosește acest format pentru multe opțiuni din baza de date.
Pentru date schimbate cu alte aplicații sau cu JavaScript, json_encode este de obicei o alegere mai bună: este mai ușor de citit și nu poate crea obiecte PHP.
Parametri
| Parametru | Descriere |
|---|---|
$value |
Valoarea transformată în text. Resursele și funcțiile anonime nu pot fi serializate. |
Ce returnează
Textul serializat. unserialize returnează valoarea refăcută sau false dacă textul este invalid.
Exemple
Exemplul 1: Dus și întors
<?php
$cos = ["Mouse" => 2, "Cablu" => 1];
$text = serialize($cos);
echo $text . "\n";
print_r(unserialize($text));
Rezultat
a:2:{s:5:"Mouse";i:2;s:5:"Cablu";i:1;}
Array
(
[Mouse] => 2
[Cablu] => 1
)
Exemplul 2: Formatul păstrează tipurile
Literele indică tipul: i întreg, d float, b boolean, N null, s:5 text de 5 octeți (litera ș ocupă 2 octeți).
<?php
echo serialize([42, 3.5, true, null, "Iași"]);
Rezultat
a:5:{i:0;i:42;i:1;d:3.5;i:2;b:1;i:3;N;i:4;s:5:"Iași";}
Exemplul 3: Fără obiecte, pentru date nesigure
Cu allowed_classes => false, obiectul nu este refăcut ca Utilizator, ci ca o clasă specială, fără metode.
<?php
class Utilizator { public $nume = "Ana"; }
$text = serialize(new Utilizator());
$sigur = unserialize($text, ["allowed_classes" => false]);
echo get_class($sigur);
Rezultat
__PHP_Incomplete_Class
Greșeli frecvente
- Faci
unserializepe date primite de la utilizatori (cookie-uri, formulare). Un atacator poate crea obiecte care rulează cod pe server. Foloseștejson_decodesau opțiuneaallowed_classes => false. - Modifici manual un text serializat (de exemplu cu căutare și înlocuire în baza de date WordPress). Lungimile
s:4nu se mai potrivesc șiunserializeeșuează.
Comenzi înrudite
json_encode: Transformă un tablou sau obiect PHP în text JSON.json_decode: Transformă un text JSON în tablou sau obiect PHP.var_export: Afișează o variabilă ca cod PHP valid, pe care îl poți copia înapoi într-un script.