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 <?php
require_once 'lib/gettext/gettext.inc.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 { class Sessions implements \SessionHandlerInterface {
private int $session_expire; private int $session_expire;
private string $session_name; private string $session_name;
public function __construct() { public function __construct() {
$this->session_expire = min(2147483647 - time() - 1, max(\Config::get(\Config::SESSION_COOKIE_LIFETIME), 86400)); $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_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'); ini_set('session.cookie_secure', 'true');
} }
...@@ -19,10 +26,15 @@ class Sessions implements \SessionHandlerInterface { ...@@ -19,10 +26,15 @@ class Sessions implements \SessionHandlerInterface {
ini_set('session.use_only_cookies', 'true'); ini_set('session.use_only_cookies', 'true');
ini_set('session.gc_maxlifetime', $this->session_expire); ini_set('session.gc_maxlifetime', $this->session_expire);
ini_set('session.cookie_lifetime', '0'); 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])) { if (isset($_COOKIE[$this->session_name])) {
setcookie($this->session_name, return setcookie($this->session_name,
$_COOKIE[$this->session_name], $_COOKIE[$this->session_name],
time() + $this->session_expire, time() + $this->session_expire,
ini_get('session.cookie_path'), ini_get('session.cookie_path'),
...@@ -30,6 +42,7 @@ class Sessions implements \SessionHandlerInterface { ...@@ -30,6 +42,7 @@ class Sessions implements \SessionHandlerInterface {
ini_get('session.cookie_secure'), ini_get('session.cookie_secure'),
ini_get('session.cookie_httponly')); ini_get('session.cookie_httponly'));
} }
return false;
} }
public function open(string $path, string $name): bool { public function open(string $path, string $name): bool {
......
...@@ -5,6 +5,8 @@ require_once 'autoload.php'; ...@@ -5,6 +5,8 @@ require_once 'autoload.php';
require_once 'errorhandler.php'; require_once 'errorhandler.php';
$sessions = new \Sessions; $sessions = new \Sessions;
$sessions->configure();
$sessions->extend_session();
if (\Config::get_schema_version() >= 0) { if (\Config::get_schema_version() >= 0) {
session_set_save_handler($sessions); 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