diff options
Diffstat (limited to 'classes/session/FilesSession.php')
| -rw-r--r-- | classes/session/FilesSession.php | 142 |
1 files changed, 0 insertions, 142 deletions
diff --git a/classes/session/FilesSession.php b/classes/session/FilesSession.php deleted file mode 100644 index 8762776..0000000 --- a/classes/session/FilesSession.php +++ /dev/null @@ -1,142 +0,0 @@ -<?php - -/** FileSessionHandler - * is a custom File-based Session Handler - * - * Could be useful when implemented along with data-cryptography, - * otherwise php's default session handler (which is also file-based) - * seems to be the obvious way to go; - * - * NOTE: - * if shared sessions accros an array of servers is needed, - * a database-session handler is probably the best choice. - * - * TODO: - * implement cryptography - */ -class FileSessionHandler implements SessionHandlerInterface -{ - /** The filesystem instance. */ - protected $sessionName; - - /** The path where all sessions should be stored. */ - protected $path; - - /** The number of minutes the session should be valid. */ - protected $minutes; - - /** - * Create a new file driven session-handler instance. - * - * @param string $path - * @param int $minutes - * @return void - */ - public function __construct() - { - // values comming from configuration - $this->sess_filename = $path; - $this->minutes = $minutes; - - // Set handler to overide SESSION - session_set_save_handler( - array($this, "open"), - array($this, "close"), - array($this, "read"), - array($this, "write"), - array($this, "destroy"), - array($this, "gc") - ); - - // Start the session - session_name(SESSION_NAME); - session_start(); - } - - /** open - * set filename; - * no need to touch the filesystem yet - * return true (always) - */ - public function open($savePath, $sessionName): bool - { - $this->sess_filename = $this->$path .'/'. $sessionName; - return true; - } - - /** close - * nothing needs to be closed; - * return true (always) - */ - public function close(): bool - { - return true; - } - - /** read - * chech if file exists; if not return false - * read data - */ - public function read($sessionId): string|false - { - if (!file_exists($filename) || !is_readable($filename)) return false; - return file_get_contents($filename); - - # if ($this->files->isFile($path = $this->path.'/'.$sessionId) && - # $this->files->lastModified($path) >= Carbon::now()->subMinutes($this->minutes)->getTimestamp()) { - # return $this->files->sharedGet($path); - # } - - # depricated? return ''; - } - - /** write - * data serielized already by php's internal session engine - */ - public function write($sessionId, $data): bool - { - $h = fopen($filename, 'w'); - if (fwrite($h,$data) === false) { - throw new Exception('Could not write session data'); - return false; - } - fclose($h); - - return true; - } - - /** - * {@inheritdoc} - * - * @return bool - */ - public function destroy($sassionID): bool - { - unlink($this->sassionID); - - return true; - } - - /** - * {@inheritdoc} - * - * @return int - */ - public function gc($lifetime) : int - { - $files = Finder::create() - ->in($this->path) - ->files() - ->ignoreDotFiles(true) - ->date('<= now - '.$lifetime.' seconds'); - - $deletedSessions = 0; - - foreach ($files as $file) { - $this->files->delete($file->getRealPath()); - $deletedSessions++; - } - - return $deletedSessions; - } -} |
