PHP Conference Japan 2024

SessionHandlerInterface::read

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

SessionHandlerInterface::read读取会话数据

描述

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

从会话存储中读取会话数据,并返回结果。在会话启动后或调用 session_start() 后立即调用。请注意,在此方法被调用之前,会调用 SessionHandlerInterface::open()

当会话启动时,PHP 本身会调用此方法。此方法应通过提供的会话 ID 从存储中检索会话数据。此方法返回的字符串必须与最初传递给 SessionHandlerInterface::write() 时的序列化格式相同。如果未找到记录,则返回 false

此方法返回的数据将由 PHP 使用在 session.serialize_handler 中指定的反序列化方法在内部解码。结果数据将用于填充 $_SESSION 超全局变量。

请注意,序列化方案与 unserialize() 不同,可以通过 session_decode() 访问。

参数

id

会话 ID。

返回值

返回读取数据的编码字符串。如果未读取任何内容,则必须返回 false。请注意,此值会内部返回给 PHP 以进行处理。

参见

添加注释

用户贡献的注释 1 条注释

10
匿名
1 年前
看起来,如果此函数返回 false,则会导致错误日志中发出“session_start(): Failed to read session data: user”。这似乎还会产生级联效应,导致不调用 write() 方法。

因此,返回 false 似乎仅用于指示错误状态。为了指示没有现有的会话,但可以创建新的会话,返回空字符串似乎是可行的办法。
To Top