Move session stuff in EesyPHP namespace
This commit is contained in:
parent
cf6ea5480b
commit
15c2acee08
4 changed files with 92 additions and 48 deletions
|
@ -5,6 +5,7 @@ use EesyPHP\Log;
|
|||
use EesyPHP\SentryIntegration;
|
||||
use EesyPHP\SentrySpan;
|
||||
use EesyPHP\SentryTransaction;
|
||||
use EesyPHP\Session;
|
||||
use EesyPHP\Url;
|
||||
|
||||
error_reporting(E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED);
|
||||
|
@ -59,7 +60,10 @@ Log::init(
|
|||
isset($log_php_errors_levels)?$log_php_errors_levels:null
|
||||
);
|
||||
require_once('functions.php');
|
||||
require_once('session.php');
|
||||
Session :: init(
|
||||
isset($session_max_duration)?$session_max_duration:null,
|
||||
isset($session_timeout)?$session_timeout:null
|
||||
);
|
||||
|
||||
// Nomenclatures
|
||||
$status_list = array (
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
use EesyPHP\Check;
|
||||
use EesyPHP\Log;
|
||||
use EesyPHP\Session;
|
||||
|
||||
/*
|
||||
* Check values helpers
|
||||
|
@ -313,7 +314,7 @@ function check_ajax_request($session_key=null) {
|
|||
global $ajax, $debug_ajax;
|
||||
$ajax = true;
|
||||
|
||||
if (check_session_key($session_key))
|
||||
if (Session :: check_key($session_key))
|
||||
fatal_error('Invalid request');
|
||||
|
||||
if ($debug_ajax)
|
||||
|
|
|
@ -1,46 +0,0 @@
|
|||
<?php
|
||||
|
||||
use EesyPHP\Log;
|
||||
|
||||
if (php_sapi_name() == "cli")
|
||||
return true;
|
||||
|
||||
// Define session max duration
|
||||
if (!isset($session_max_duration))
|
||||
$session_max_duration = (12*60*60); // Default to 12h
|
||||
ini_set('session.gc_maxlifetime', $session_max_duration);
|
||||
ini_set('session.cookie_lifetime', $session_max_duration);
|
||||
|
||||
// Start session
|
||||
session_start();
|
||||
|
||||
// Init session key
|
||||
if (!isset($_SESSION['session_key'])) {
|
||||
$_SESSION['session_key']=uniqid();
|
||||
}
|
||||
|
||||
// Handle session timeout
|
||||
if (isset($session_timeout) && $session_timeout) {
|
||||
if (!isset($_SESSION['session_last_access'])) {
|
||||
Log :: debug('Set initial session last access');
|
||||
$_SESSION['session_last_access'] = time();
|
||||
}
|
||||
elseif ($_SESSION['session_last_access'] > (time() - $session_timeout)) {
|
||||
Log :: debug(
|
||||
'Session timeout not expired, update session last access '.
|
||||
'(Previous value : '.$_SESSION['session_last_access'].')');
|
||||
$_SESSION['session_last_access'] = time();
|
||||
}
|
||||
else {
|
||||
Log :: info('Session destroyed due to inactivity');
|
||||
session_destroy();
|
||||
}
|
||||
}
|
||||
|
||||
function check_session_key($value=null) {
|
||||
if (is_null($value) && isset($_REQUEST['session_key']))
|
||||
$value = $_REQUEST['session_key'];
|
||||
return ($value && $_SESSION['session_key'] == $value);
|
||||
}
|
||||
|
||||
# vim: tabstop=2 shiftwidth=2 softtabstop=2 expandtab
|
85
src/Session.php
Normal file
85
src/Session.php
Normal file
|
@ -0,0 +1,85 @@
|
|||
<?php
|
||||
|
||||
namespace EesyPHP;
|
||||
|
||||
use EesyPHP\Log;
|
||||
|
||||
|
||||
/**
|
||||
* Session management
|
||||
*/
|
||||
class Session {
|
||||
|
||||
/**
|
||||
* Session max duration (in seconds, default: 12h)
|
||||
* @var int
|
||||
*/
|
||||
protected static int $max_duration = 12 * 60 * 60;
|
||||
|
||||
/**
|
||||
* Initialization
|
||||
* @param int|null $max_duration Session max duration in second
|
||||
* (optional, default: 12h)
|
||||
* @param int|null $timeout Session inactivity timeout in second
|
||||
* (optional, default: no timeout)
|
||||
* @return void
|
||||
*/
|
||||
public static function init($max_duration=null, $timeout=null) {
|
||||
if (php_sapi_name() == "cli")
|
||||
return;
|
||||
|
||||
// Define session max duration
|
||||
if (is_int($max_duration))
|
||||
self :: $max_duration = $max_duration;
|
||||
|
||||
ini_set('session.gc_maxlifetime', strval(self :: $max_duration));
|
||||
ini_set('session.cookie_lifetime', strval(self :: $max_duration));
|
||||
|
||||
// Start session
|
||||
session_start();
|
||||
|
||||
// Init session key
|
||||
if (!isset($_SESSION['session_key'])) {
|
||||
$_SESSION['session_key'] = uniqid();
|
||||
}
|
||||
|
||||
// Handle session timeout
|
||||
if ($timeout) {
|
||||
if (!isset($_SESSION['session_last_access'])) {
|
||||
Log :: debug('Set initial session last access');
|
||||
$_SESSION['session_last_access'] = time();
|
||||
}
|
||||
elseif ($_SESSION['session_last_access'] > (time() - $timeout)) {
|
||||
Log :: debug(
|
||||
'Session timeout not expired, update session last access '.
|
||||
'(Previous value : %d', $_SESSION['session_last_access']);
|
||||
$_SESSION['session_last_access'] = time();
|
||||
}
|
||||
else {
|
||||
Log :: info('Session destroyed due to inactivity');
|
||||
session_destroy();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Check session key
|
||||
* @param string|null $value The value of the session key to check
|
||||
* (optional, default: $_REQUEST['session_key'])
|
||||
* @return bool
|
||||
*/
|
||||
public static function check_key($value=null) {
|
||||
if (is_null($value) && isset($_REQUEST['session_key']))
|
||||
$value = $_REQUEST['session_key'];
|
||||
return ($value && $_SESSION['session_key'] == $value);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
if (php_sapi_name() == "cli")
|
||||
return true;
|
||||
|
||||
|
||||
|
||||
# vim: tabstop=2 shiftwidth=2 softtabstop=2 expandtab
|
Loading…
Reference in a new issue