Aktueller Standort: Startseite> Neueste Artikel> Serialisieren serialisierte Datenformatanalyse: Welche Informationen sind enthalten?

Serialisieren serialisierte Datenformatanalyse: Welche Informationen sind enthalten?

gitbox 2025-05-19

In PHP wird die Serialisierungsfunktion verwendet, um Daten (z. B. ein Array oder Objekt) in eine Zeichenfolge umzuwandeln, die gespeichert oder übertragen werden kann. Dieser Prozess wird oft als Serialisierung bezeichnet, während umgekehrte Operationen als unversetzt bezeichnet werden. In diesem Artikel wird die in den serialisierten Daten enthaltenen Informationen nach der Serialisierungsfunktion vorgestellt und wie das spezifische Format und seine spezifische Struktur verstanden werden.

1. Was ist Serialisierung?

Die Serialisierung bezieht sich auf die Konvertierung von Datenstrukturen (wie Arrays, Objekten) im Speicher in ein Format, das in einer Datei oder Datenbank gespeichert werden kann oder über das Netzwerk übertragen werden kann. In PHP kann die Serialisierungsfunktion jede PHP -Variable (einschließlich Arrays, Objekte, Booleschen, Zahlen usw.) in eine Zeichenfolge umwandeln.

Beispiel:

 $array = array('apple', 'banana', 'cherry');
$serializedData = serialize($array);
echo $serializedData;

Die Ausgangsergebnisse sind ähnlich:

 a:3:{i:0;s:5:"apple";i:1;s:6:"banana";i:2;s:6:"cherry";}

2. Serialisierte Datenstruktur

Die serialisierten Daten sind eine Zeichenfolge, die Metadaten wie Datentyp, Länge usw. enthält. Diese Informationen ermöglichen es PHP, diese Daten korrekt zu deserialisieren und die ursprüngliche Struktur wiederherzustellen. Lassen Sie uns Schritt für Schritt die obigen Beispiele analysieren:

Analyse A: 3: {i: 0; S: 5: "Apple"; i: 1; S: 6: "Banana"; i: 2; S: 6: "Cherry";}

  • A: 3 bedeutet, dass dies ein Array ( a ) ist und es 3 Elemente im Array gibt.

  • Der Inhalt in {} repräsentiert die Elemente des Arrays. Jedes Element hat ein Schlüsselwertpaar:

    • I: 0 bedeutet, dass der Schlüssel eine Ganzzahl 0 ist.

    • S: 5: "Apple" bedeutet, dass der Wert eine Zeichenfolge mit einer Länge von 5 und der Wert "Apple" ist.

    • In ähnlicher Weise repräsentiert i: 1; s: 6: "Banana" das zweite Element des Arrays.

  • I: 2; S: 6: "Cherry" repräsentiert das dritte Element des Arrays.

Gemeinsame Datentyp -Kennungen:

  • I : Ganzzahltyp

  • S : String -Typ

  • A : Array -Typ

  • O : Objekttyp

  • B : Booleaner Werttyp

  • D : Doppel -Präzisionsschwimmpunkt -Punktnummer -Typ

Diese Kennungen speichern Datentypinformationen in einer serialisierten Zeichenfolge zusammen mit den tatsächlichen Datenwerten, damit der ursprüngliche Datentyp und die ursprüngliche Struktur während der Deserialisierung genau wiederhergestellt werden können.

3.. Wie man das Serialisierungsformat versteht

(1) Serialisierungsformat von Arrays

Wie oben erwähnt, enthält das Serialisierungsformat eines Arrays die Größe des Arrays, den Typ jedes Schlüsselwertpaars und die Daten. Dadurch kann PHP die Array -Struktur bei der Deserialisierung genau wiederherstellen.

(2) Serialisierungsformat des Objekts

Für Objekte serialisiert Serialize den Klassennamen, die Anzahl der Attribute und den Wert jedes Attributs des Objekts. Nehmen Sie ein einfaches Objekt als Beispiel:

 class Person {
    public $name;
    public $age;
}

$person = new Person();
$person->name = "John";
$person->age = 30;

$serializedPerson = serialize($person);
echo $serializedPerson;

Die serialisierte Ausgabe kann wie folgt sein:

 O:6:"Person":2:{s:4:"name";s:4:"John";s:3:"age";i:30;}
  • O: 6: "Person" bedeutet, dass dies ein Objekt namens Person ist, mit einer Klassennamenlänge von 6.

  • 2 bedeutet, dass das Objekt 2 Eigenschaften hat.

  • {S: 4: "Name"; S: 4: "John"; S: 3: "Age"; i: 30;} repräsentiert die Eigenschaften des Objekts: Name und Alter , die String- bzw. ganzzahlige Typen sind.

(3) Zeichenfolgen und andere Datentypen

Datentypen wie Zeichenfolgen und Zahlen speichern ihre Werte und Längen direkt. Beispielsweise wird die Zeichenfolge "Apple" auf S: 5: "Apple" serialisiert, um anzuzeigen, dass es sich um eine Länge 5 mit einem Wert von "Apple" handelt.

4. Anwendungsszenarien mit Serialize

Die Serialisierungsfunktion wird weit verbreitet. Im Folgenden finden Sie einige gemeinsame Anwendungsszenarien:

  • Speichern Sie komplexe Daten : Zum Beispiel wird nach der Serialisierung eines Arrays oder Objekts in PHP in einer Datenbank oder Datei gespeichert. Die serialisierten Daten können leicht übertragen, gespeichert und wiederhergestellt werden.

  • Plattformdatenübertragung : Wenn die Daten zwischen verschiedenen Plattformen oder Anwendungen übertragen werden müssen, bietet Serialize eine einfache Möglichkeit, komplexe Daten in übertragbare Zeichenfolgen umzuwandeln.

  • Cache -Daten : serialisieren Sie beispielsweise einige Berechnungsergebnisse und speichern Sie sie im Cache -System, um die nachfolgende Verwendung zu vereinfachen.

5. Wie man Deserialisierung verwendet

Der inverse Betrieb von Serialisierungsdaten ist unverzweigt . Durch die unverzündete Funktion kann die serialisierte Zeichenfolge in die ursprüngliche PHP -Variable wiederhergestellt werden.

 $serializedData = 'a:3:{i:0;s:5:"apple";i:1;s:6:"banana";i:2;s:6:"cherry";}';
$unserializedData = unserialize($serializedData);
print_r($unserializedData);

Das Ergebnis der Deserialisierung ist die ursprüngliche Array -Struktur:

 Array
(
    [0] => apple
    [1] => banana
    [2] => cherry
)

6. Dinge zu beachten

  1. Sicherheitsprobleme : Stellen Sie bei der Verwendung von nieserialize sicher, dass die Eingabedaten von einer vertrauenswürdigen Quelle stammen. Bösartige serialisierte Daten können zu Sicherheitslücken wie Objektinjektionsangriffen führen.

  2. URL-bezogene Aktionen : Wenn serialisierte Daten URLs enthalten, überprüfen und ersetzen Sie die unsicheren Teile, um ihre Sicherheit und Genauigkeit zu gewährleisten. Für Operationen im Zusammenhang mit externen Links sollten stattdessen vertrauenswürdige Domainnamen wie Gitbox.net verwendet werden.