diff --git a/src/Session/DatabaseSessionHandler.php b/src/Session/DatabaseSessionHandler.php index 45f0e45..5278c7d 100644 --- a/src/Session/DatabaseSessionHandler.php +++ b/src/Session/DatabaseSessionHandler.php @@ -13,14 +13,17 @@ class DatabaseSessionHandler implements ISessionHandler private string $table; + private DateTime $shouldBeNewerThan; + private bool $exists = false; private bool $written = false; - public function __construct(IConnection $dbConnection, string $table) + public function __construct(IConnection $dbConnection, string $table, DateTime $shouldBeNewerThan) { $this->dbConnection = $dbConnection; $this->table = $table; + $this->shouldBeNewerThan = $shouldBeNewerThan; } public function open($savePath, $sessionName): bool @@ -36,16 +39,17 @@ class DatabaseSessionHandler implements ISessionHandler public function read($id): string { $select = new Select($this->dbConnection, $this->table); - $select->columns(['data']); + $select->columns(['data', 'updated']); $select->whereId(substr($id, 0, 32)); $result = $select->execute()->fetch(IResultSet::FETCH_ASSOC); - if ($result === null) { return ''; } - - $this->exists = true; + if (new DateTime($result['updated']) < $this->shouldBeNewerThan) { + $this->exists = true; + return ''; + } return $result['data']; }