Skip to content
Snippets Groups Projects
Commit 44257b80 authored by wn_'s avatar wn_
Browse files

Move side effects out of the 'Sessions' constructor.

parent c7cc3c92
No related branches found
No related tags found
No related merge requests found
<?php
require_once 'lib/gettext/gettext.inc.php';
// TODO: look into making this behave closer to what SessionHandlerInterface intends
/**
* @todo look into making this behave closer to what SessionHandlerInterface intends
*/
class Sessions implements \SessionHandlerInterface {
private int $session_expire;
private string $session_name;
public function __construct() {
$this->session_expire = min(2147483647 - time() - 1, max(\Config::get(\Config::SESSION_COOKIE_LIFETIME), 86400));
$this->session_name = \Config::get(\Config::SESSION_NAME);
$this->session_expire = min(2147483647 - time() - 1, max(Config::get(Config::SESSION_COOKIE_LIFETIME), 86400));
$this->session_name = Config::get(Config::SESSION_NAME);
}
if (\Config::is_server_https()) {
/**
* Adjusts session-related PHP configuration options
*/
public function configure(): void {
if (Config::is_server_https()) {
ini_set('session.cookie_secure', 'true');
}
......@@ -19,10 +26,15 @@ class Sessions implements \SessionHandlerInterface {
ini_set('session.use_only_cookies', 'true');
ini_set('session.gc_maxlifetime', $this->session_expire);
ini_set('session.cookie_lifetime', '0');
}
// prolong PHP session cookie
/**
* Extend the validity of the PHP session cookie (if it exists)
* @return bool Whether the new cookie was set successfully
*/
public function extend_session(): bool {
if (isset($_COOKIE[$this->session_name])) {
setcookie($this->session_name,
return setcookie($this->session_name,
$_COOKIE[$this->session_name],
time() + $this->session_expire,
ini_get('session.cookie_path'),
......@@ -30,6 +42,7 @@ class Sessions implements \SessionHandlerInterface {
ini_get('session.cookie_secure'),
ini_get('session.cookie_httponly'));
}
return false;
}
public function open(string $path, string $name): bool {
......
......@@ -5,6 +5,8 @@ require_once 'autoload.php';
require_once 'errorhandler.php';
$sessions = new \Sessions;
$sessions->configure();
$sessions->extend_session();
if (\Config::get_schema_version() >= 0) {
session_set_save_handler($sessions);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment