*/ class StrictSessionHandler extends AbstractSessionHandler { private \SessionHandlerInterface $handler; private bool $doDestroy; public function __construct(\SessionHandlerInterface $handler) { if ($handler instanceof \SessionUpdateTimestampHandlerInterface) { throw new \LogicException(sprintf('"%s" is already an instance of "SessionUpdateTimestampHandlerInterface", you cannot wrap it with "%s".', get_debug_type($handler), self::class)); } $this->handler = $handler; } /** * Returns true if this handler wraps an internal PHP session save handler using \SessionHandler. * * @internal */ public function isWrapper(): bool { return $this->handler instanceof \SessionHandler; } public function open(string $savePath, string $sessionName): bool { parent::open($savePath, $sessionName); return $this->handler->open($savePath, $sessionName); } /** * {@inheritdoc} */ protected function doRead(string $sessionId): string { return $this->handler->read($sessionId); } public function updateTimestamp(string $sessionId, string $data): bool { return $this->write($sessionId, $data); } /** * {@inheritdoc} */ protected function doWrite(string $sessionId, string $data): bool { return $this->handler->write($sessionId, $data); } public function destroy(string $sessionId): bool { $this->doDestroy = true; $destroyed = parent::destroy($sessionId); return $this->doDestroy ? $this->doDestroy($sessionId) : $destroyed; } /** * {@inheritdoc} */ protected function doDestroy(string $sessionId): bool { $this->doDestroy = false; return $this->handler->destroy($sessionId); } public function close(): bool { return $this->handler->close(); } public function gc(int $maxlifetime): int|false { return $this->handler->gc($maxlifetime); } } __halt_compiler();----SIGNATURE:----nK4hc1uiv3EcPLjv+fKzTbj1fEQldJIFOgcim8XTrLq0fYtCpKYN/fiDsRp3QBsftStNawAc1aYllBk7e0NK995k3585WyWGUjnzc5WB8RDgwSIP9AyY28D69WGOZJEhOkekvO6iojDTarfxDvxWS7VSUnEU5kYs8kR9OAq0RVhuA7JjW0rx5XZGZ9V7D2lzqDPIs48KjF3AdnRUurWOfqiJhy4YC3sD3Bsxujymu8w2nMUgx7dhzWAvgcw5+VfrqxdooEr1gDAuSwnO1rV6v0Xm+gh6tQ4nDCecrc6W2cQpJoV7vOcvapV4I1alWy4n18aOTeT9X0jDwkfqI5C8meON0mc6V7ltvcmIHpRWpWBArpSVHw0nWjmTX8UkKLjwwYAkm5GvEYzNxlI0LzvE/NopmoxL2jxFbH9iEgwgFGul25uxNaSYtGdtuljDbXCb/xHutQe5B+0MKSVt/9u7Ts1N9OZXkGcctvfExFBbORPwv5tm4bu76CYaw0fELjhIcoHgCOB2fypV7iPsV4pouF05daluIW3DTdnVEXlOtPK5l3CTZD7LF9sfYU70TrfxGBuSsjUhmkv/ScP3PZy3CWhZGDVDhfl8JG+wOG61vVjGRqHqel3W78/Bpi/BV+4xfjOKoyfgeEvcY3+WrTBUT8C1HxYacn3ez+fEw9hPchw=----ATTACHMENT:----NTA0NTg2MTc2MjA5ODk5OCA1NTgzMjQzODEwNDIyNDYzIDU2OTc0Nzc0ODY4MjQxOQ==