Cet article présente les connaissances pertinentes sur la sérialisation et la désérialisation en php. Il a une très bonne valeur de référence, jetons un coup d'œil avec l'éditeur ci-dessous
Compressez les types de données complexes en une chaîne
serialize() combine les variables et leurs valeurs sont codées sous forme de texte
unserialize() restaure la variable d'origine
par exemple :
$stooges = array('Moe','Larry','Curly'); $new = serialize($stooges); print_r($new);echo "<br />"; print_r(unserialize($new));
Résultat : a:3:{i:0;s:3:"Moe";i:1;s:5:"Larry";i:2;s:5:"Curly";}
Array ( [0] => Moe [1] => Larry [2] => Curly )
Lors de la mise de ces données sérialisées dans l'URL entre les pages Lors du passage, vous devez appelez urlencode() sur ces données pour vous assurer que les métacaractères de l'URL qu'elles contiennent sont traités :
$shopping = array('Poppy seed bagel' => 2,'Plain Bagel' =>1,'Lox' =>4); echo '<a href="next.php?cart='.urlencode(serialize($shopping)).'" rel="external nofollow" >next</a>';
éléments de configuration margic_quotes_gpc et magic_quotes_runtime Le paramètre affectera les données passé à unserialize().
Si l'option magic_quotes_gpc est activée, les données transmises dans les URL, les variables POST et les cookies doivent être traitées avec stripslashes() avant la désérialisation :
$new_cart = unserialize(stripslashes($cart)); //如果magic_quotes_gpc开启 $new_cart = unserialize($cart);
Si magic_quotes_runtime est activé, les données sérialisées doivent être traitées avec addlashes() avant d'écrire dans le fichier, et stripslashes() avant de les lire :
$fp = fopen('/tmp/cart','w'); fputs($fp,addslashes(serialize($a))); fclose($fp); //如果magic_quotes_runtime开启 $new_cat = unserialize(stripslashes(file_get_contents('/tmp/cart'))); //如果magic_quotes_runtime关闭 $new_cat = unserialize(file_get_contents('/tmp/cart'));
Lorsque magic_quotes_runtime est activé, les données sérialisées lues dans la base de données doivent également être traitées par stripslashes() et enregistrées dans la base de données. Les données sérialisées doivent être traitées par addlashes() afin qu'elles puissent être stockées de manière appropriée.
mysql_query("insert into cart(id,data) values(1,'".addslashes(serialize($cart))."')"); $rs = mysql_query('select data from cart where id=1'); $ob = mysql_fetch_object($rs); //如果magic_quotes_runtime开启 $new_cart = unserialize(stripslashes($ob->data)); //如果magic_quotes_runtime关闭 $new_cart = unserialize($ob->data);
Lors de la désérialisation d'un objet, PHP appellera automatiquement sa méthode __wakeUp(). Cela permet à l'objet de rétablir divers états qui n'ont pas été conservés lors de la sérialisation. Par exemple : connexion à une base de données, etc.
Ce qui précède représente l’intégralité du contenu de cet article, j’espère qu’il sera utile à l’étude de chacun.
Recommandations associées :
PHP Sérialisation et Dé-Sérialisation Explication détaillée des fonctions avec images et texte
PHP implémente diverses méthodes de sérialisation/anti-sérialisation
formulaireSérialisationExplication détaillée (tutoriel image et texte)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!