Start · Sprachen · PHP · Referenz · session_encode

session_encode

Funktion

Serialisiert alle Variablen der aktuellen Session in eine kodierte Zeichenkette im PHP-Session-Format.

seit PHP 4.0.0 Kategorie: http

Signatur

session_encode(): string|false

Beschreibung

session_encode() wandelt den gesamten Inhalt des $_SESSION-Superglobals in eine einzelne Zeichenkette um, die dem Format entspricht, das PHP intern für die Session-Speicherung verwendet. Das Format hängt von der aktuell konfigurierten session.serialize_handler-INI-Einstellung ab (standardmäßig php oder php_serialize).

Die Funktion ist nützlich, wenn man den aktuellen Session-Zustand manuell speichern, debuggen, in eine Datenbank schreiben oder über ein benutzerdefiniertes Speicher-Backend weiterleiten möchte. Zum Wiederherstellen einer so erzeugten Zeichenkette dient die Gegenfunktion session_decode().

Im Standardformat (php) werden Variablen im Stil varname|serialisierter_wert hintereinander gereihit. Verwendet man den Handler php_serialize, wird die komplette Session als reguläres serialize()-Ergebnis kodiert, was robuster mit Sonderzeichen in Variablennamen umgeht.

Es ist zu beachten, dass session_encode() nur dann korrekt funktioniert, wenn eine Session zuvor mit session_start() gestartet wurde. Ohne aktive Session liefert die Funktion false.

Rückgabewert

Typ
string|false
Beschreibung
Gibt die kodierte Session-Zeichenkette zurück. Im Fehlerfall (z. B. keine aktive Session) wird false zurückgegeben.

Beispiele

Session-Inhalt als Zeichenkette ausgeben

<?php
session_start();

$_SESSION['user'] = 'Alice';
$_SESSION['role'] = 'admin';
$_SESSION['counter'] = 42;

$encoded = session_encode();
echo $encoded;
user|s:5:"Alice";role|s:5:"admin";counter|i:42;

Session-Zustand sichern und wiederherstellen

<?php
session_start();

$_SESSION['cart'] = ['item1', 'item2', 'item3'];
$_SESSION['promo'] = 'SALE10';

// Aktuellen Zustand als Snapshot speichern
$snapshot = session_encode();
file_put_contents('/tmp/session_snapshot.txt', $snapshot);

echo "Session gespeichert:\n";
echo $snapshot . "\n";

// Später: Snapshot wiederherstellen
session_start(); // neue oder gleiche Session
$data = file_get_contents('/tmp/session_snapshot.txt');
if (session_decode($data)) {
    echo "Wiederhergestellt. Warenkorb: ";
    print_r($_SESSION['cart']);
} else {
    echo "Wiederherstellung fehlgeschlagen.";
}
Session gespeichert: cart|a:3:{i:0;s:5:"item1";i:1;s:5:"item2";i:2;s:5:"item3";}promo|s:6:"SALE10"; Wiederhergestellt. Warenkorb: Array ( [0] => item1 [1] => item2 [2] => item3 )

// Wichtig · Fallstricke

Serialize-Handler beachten: Das Ausgabeformat hängt von session.serialize_handler ab. Der Standard-Handler php verarbeitet keine Variablennamen mit dem Pipe-Zeichen (|) korrekt. Wer solche Schlüssel benötigt, sollte php_serialize verwenden (ini_set('session.serialize_handler', 'php_serialize')).

Kompatibilität beim Decode: Eine mit einem bestimmten Handler kodierte Zeichenkette muss auch mit demselben Handler dekodiert werden. Das Mischen verschiedener Handler führt zu Datenverlust oder Fehlern.

Kein Ersatz für serialize(): session_encode() ist kein allgemeiner Serialisierer — er liest ausschließlich den Inhalt von $_SESSION und ist nicht für die Serialisierung beliebiger Daten geeignet.