Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung der PHP-Serialisierung und -Deserialisierung

Detaillierte Erläuterung der PHP-Serialisierung und -Deserialisierung

墨辰丷
墨辰丷Original
2018-05-25 14:53:051223Durchsuche

In diesem Artikel werden die relevanten Kenntnisse zur Serialisierung und Deserialisierung in PHP vorgestellt. Es hat einen sehr guten Referenzwert, schauen wir uns den Editor unten an

Komprimieren Sie komplexe Datentypen in einen String

serialize() kombiniert Variablen und ihre Werte werden codiert in Textform

unserialize(), um die ursprüngliche Variable wiederherzustellen

z. B.:

$stooges = array('Moe','Larry','Curly');
$new = serialize($stooges);
print_r($new);echo "<br />";
print_r(unserialize($new));

Ergebnis: a:3:{i:0;s:3:"Moe";i:1;s:5:"Larry";i:2;s:5:"Curly";}

Array ( [0] => Moe [1] => Larry [2] => Curly )

Wenn diese serialisierten Daten in der URL platziert werden, werden sie zwischen dem URL-Code der Seiten übergeben () muss für diese Daten aufgerufen werden, um sicherzustellen, dass die darin enthaltenen URL-Metazeichen verarbeitet werden:

$shopping = array(&#39;Poppy seed bagel&#39; => 2,&#39;Plain Bagel&#39; =>1,&#39;Lox&#39; =>4);
echo &#39;<a href="next.php?cart=&#39;.urlencode(serialize($shopping)).&#39;" rel="external nofollow" >next</a>&#39;;

Die Einstellungen der Konfigurationselemente margic_quotes_gpc und magic_quotes_runtime wirken sich aus Die an unserialize() übergebenen Daten.

Wenn die Option magic_quotes_gpc aktiviert ist, müssen in URLs, POST-Variablen und Cookies übergebene Daten vor der Deserialisierung mit stripeslashes() verarbeitet werden:

$new_cart = unserialize(stripslashes($cart)); //如果magic_quotes_gpc开启
$new_cart = unserialize($cart);

Wenn magic_quotes_runtime aktiviert ist, müssen serialisierte Daten vor dem Schreiben in die Datei mit addslashes() und vor dem Lesen mit stripeslashes() verarbeitet werden:

$fp = fopen(&#39;/tmp/cart&#39;,&#39;w&#39;);
fputs($fp,addslashes(serialize($a)));
fclose($fp);
//如果magic_quotes_runtime开启
$new_cat = unserialize(stripslashes(file_get_contents(&#39;/tmp/cart&#39;)));
//如果magic_quotes_runtime关闭
$new_cat = unserialize(file_get_contents(&#39;/tmp/cart&#39;));

Wann Wenn magic_quotes_runtime aktiviert ist, müssen aus der Datenbank gelesene serialisierte Daten ebenfalls von stripeslashes() verarbeitet und zur Serialisierung in der Datenbank gespeichert werden. Daten müssen von addslashes() verarbeitet werden, damit sie ordnungsgemäß gespeichert werden können.

mysql_query("insert into cart(id,data) values(1,&#39;".addslashes(serialize($cart))."&#39;)");
$rs = mysql_query(&#39;select data from cart where id=1&#39;);
$ob = mysql_fetch_object($rs);
//如果magic_quotes_runtime开启
$new_cart = unserialize(stripslashes($ob->data));
//如果magic_quotes_runtime关闭
$new_cart = unserialize($ob->data);

Beim Deserialisieren eines Objekts ruft PHP automatisch seine __wakeUp()-Methode auf. Dadurch kann das Objekt verschiedene Zustände wiederherstellen, die während der Serialisierung nicht beibehalten wurden. Zum Beispiel: Datenbankverbindung usw.

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass er für das Studium aller hilfreich sein wird.


Verwandte Empfehlungen:

PHP Serialisierung und De-Serialisierung Ausführliche Erklärung der Funktionen mit Bilder und Text

PHP implementiert verschiedene Serialisierungs-/Anti-Serialisierungs--Methoden

FormularformularSerialisierungAusführliche Erklärung (Bild- und Textanleitung)

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der PHP-Serialisierung und -Deserialisierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn