CakeFest 2024: The Official CakePHP Conference

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 が内部的に使うためだけのものであることに注意しましょう。

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