CakeFest 2024: The Official CakePHP Conference

SessionHandlerInterface::read

(PHP 5 >= 5.4.0, PHP 7, PHP 8)

SessionHandlerInterface::readRuft die Session-Daten ab

Beschreibung

public SessionHandlerInterface::read(string $id): string|false

Liest die Session-Daten aus dem Session-Speicher und gibt das Ergebnis zurück. Diese Methode wird direkt nach dem Start einer Session aufgerufen oder wenn session_start() aufgerufen wird. Es ist zu beachten, dass vor dem Aufruf dieser Methode SessionHandlerInterface::open() aufgerufen wird.

Diese Methode wird von PHP selbst aufgerufen, wenn eine Session gestartet wird. Sie soll die Session-Daten anhand der angegebenen Session-ID aus dem Speicher abrufen. Die von dieser Methode zurückgegebene Zeichenkette muss dasselbe serialisierte Format haben wie die ursprünglich an die SessionHandlerInterface::write() übergebene Zeichenkette. Wenn der Datensatz nicht gefunden werden konnte, wird false zurückgegeben.

Die von dieser Methode zurückgegebenen Daten werden von PHP intern dekodiert, indem die in session.serialize_handler angegebene Methode zur Deserialisierung verwendet wird. Mit den daraus resultierenden Daten wird die Superglobale $_SESSION gefüllt.

Zu beachten ist, dass das Serialisierungsverfahren nicht dasselbe ist wie bei unserialize() und mittels session_decode() aufgerufen werden kann.

Parameter-Liste

id

Die Session-ID

Rückgabewerte

Gibt eine kodierte Zeichenkette der gelesenen Daten zurück. Wurde nichts gelesen, wird false zurückgegeben. Zu beachten ist, dass dieser Wert intern zur Verarbeitung an PHP zurückgegeben wird.

Siehe auch

add a note

User Contributed Notes 1 note

up
8
Anonymous
1 year ago
It appears that, if this function returns false, it causes "session_start(): Failed to read session data: user" to be emitted in the error log. This also seems to have a cascading effect that causes the write() method not to be called.

So, returning false appears to only be for indicating an error state. To indicate that there is no existing session, but that it is okay to create one, it appears that returning an empty string is the way to go.
To Top