Heim  >  Artikel  >  Backend-Entwicklung  >  Vertiefte Kenntnisse der Serialisierung und Deserialisierung in PHP

Vertiefte Kenntnisse der Serialisierung und Deserialisierung in PHP

迷茫
迷茫Original
2017-03-26 11:05:201386Durchsuche

Komplexe Datentypen in eine Zeichenfolge komprimieren

serialize() Variablen und ihre Werte in Textform kodieren

unserialize() Originalvariablen wiederherstellen

<span style="color: #800080">$stooges = <span style="color: #0000ff"><a href="http://www.php.cn/wiki/1041.html" target="_blank">array</a>(&#39;Moe&#39;,&#39;Larry&#39;,&#39;Curly&#39;);<br/><span style="color: #800080">$<a href="http://www.php.cn/wiki/165.html" target="_blank">new</a> = <span style="color: #008080">serialize(<span style="color: #800080">$stooges);<br/><span style="color: #008080"><a href="http://www.php.cn/wiki/1362.html" target="_blank">print</a>_r(<span style="color: #800080">$new);<span style="color: #0000ff"><a href="http://www.php.cn/wiki/1343.html" target="_blank">echo</a> "<br />";<br/><span style="color: #008080">print_r(<span style="color: #008080">unserialize(<span style="color: #800080">$new));</span></span></span></span></span></span></span></span></span></span></span>

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 Sie diese serialisierten Daten in die URL einfügen, ändern sie sich zwischen den Seiten um urlencode() für diese Daten aufzurufen, um sicherzustellen, dass die darin enthaltenen URL-Metazeichen verarbeitet werden:

<span style="color: #800080">$shopping = <span style="color: #0000ff">array(&#39;Poppy seed bagel&#39; => 2,&#39;Plain Bagel&#39; =>1,&#39;Lox&#39; =>4);<br/><span style="color: #0000ff">echo &#39;<a href="next.php?cart=&#39;.<span style="color: #008080">urlencode(<span style="color: #008080">serialize(<span style="color: #800080">$shopping)).&#39;">next</a>&#39;;</span></span></span></span></span></span>

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

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:

<span style="color: #800080">$new_cart = <span style="color: #008080">unserialize(<span style="color: #008080">stripslashes(<span style="color: #800080">$cart)); <span style="color: #008000">//<span style="color: #008000">如果magic_quotes_gpc开启<span style="color: #008000"><br/><span style="color: #800080">$new_cart = <span style="color: #008080">unserialize(<span style="color: #800080">$cart);</span></span></span></span></span></span></span></span></span></span>

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

//当对一个对象进行反序列化操作时,PHP会自动地调用其wakeUp()方法。这样就使得对象能够重新建立起序列化时未能保留的各种状态。例如:数据库连接等。

Das obige ist der detaillierte Inhalt vonVertiefte Kenntnisse der Serialisierung und Deserialisierung in PHP. 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