(PHP 5 >= 5.4.0, PHP 7, PHP 8)
SessionHandlerInterface::read — Leer información de sesión
Lee la información de sesión desde el almacenamiento de sesiones, y devuelve el resultado. Llamado justo después de iniciarse una sesión o cuando es llamada session_start() . Observe que antes de que este método sea llamado SessionHandlerInterface::open() es invocado.
Este método es llmado por PHP cuando la sesión es iniciada.
Este método debería recuperar la información de sesión desde el almacenamiento mediante el
ID de sesión proporcionado. La cadena devuelta por este método debe estar en el mismo
formato serializado que el orgibal pasado a SessionHandlerInterface::write()
Si no se encuentra el registro, devuelve false .
La información devuelta por este método será decodificada internamente por PHP usando el método de deserialización especificado en session.serialize_handler. La información resultante será usada para rellenar la variable superglobal $_SESSION .
Observe que el esquema de serialización no es el mismo que unserialize() y pudede accederse a él mediante session_decode() .
idEl ID de sesión.
Devuelve una cadena codificada de la información leída. Si no se leyó nada, debe devolver false . Observe que este valor es devuelto internamente por PHP para procesamiento.
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.