2018-02-09 04:49:49 +01:00
|
|
|
<?php
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @file src/Core/Session.php
|
|
|
|
*/
|
|
|
|
namespace Friendica\Core;
|
|
|
|
|
2018-03-01 05:48:09 +01:00
|
|
|
use Friendica\Core\Session\CacheSessionHandler;
|
2018-02-09 04:49:49 +01:00
|
|
|
use Friendica\Core\Session\DatabaseSessionHandler;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* High-level Session service class
|
|
|
|
*
|
2018-09-16 01:28:38 +02:00
|
|
|
* @author Hypolite Petovan <hypolite@mrpetovan.com>
|
2018-02-09 04:49:49 +01:00
|
|
|
*/
|
|
|
|
class Session
|
|
|
|
{
|
|
|
|
public static $exists = false;
|
|
|
|
public static $expire = 180000;
|
|
|
|
|
|
|
|
public static function init()
|
|
|
|
{
|
|
|
|
ini_set('session.gc_probability', 50);
|
|
|
|
ini_set('session.use_only_cookies', 1);
|
|
|
|
ini_set('session.cookie_httponly', 1);
|
|
|
|
|
|
|
|
if (Config::get('system', 'ssl_policy') == SSL_POLICY_FULL) {
|
|
|
|
ini_set('session.cookie_secure', 1);
|
|
|
|
}
|
|
|
|
|
2018-03-01 05:48:09 +01:00
|
|
|
$session_handler = Config::get('system', 'session_handler', 'database');
|
|
|
|
if ($session_handler != 'native') {
|
|
|
|
if ($session_handler == 'cache' && Config::get('system', 'cache_driver', 'database') != 'database') {
|
|
|
|
$SessionHandler = new CacheSessionHandler();
|
2018-02-09 04:49:49 +01:00
|
|
|
} else {
|
|
|
|
$SessionHandler = new DatabaseSessionHandler();
|
|
|
|
}
|
|
|
|
|
|
|
|
session_set_save_handler($SessionHandler);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public static function exists($name)
|
|
|
|
{
|
|
|
|
return isset($_SESSION[$name]);
|
|
|
|
}
|
|
|
|
|
2018-08-05 15:56:21 +02:00
|
|
|
/**
|
|
|
|
* Retrieves a key from the session super global or the defaults if the key is missing or the value is falsy.
|
|
|
|
*
|
|
|
|
* Handle the case where session_start() hasn't been called and the super global isn't available.
|
|
|
|
*
|
|
|
|
* @param string $name
|
|
|
|
* @param mixed $defaults
|
|
|
|
* @return mixed
|
|
|
|
*/
|
|
|
|
public static function get($name, $defaults = null)
|
2018-02-09 04:49:49 +01:00
|
|
|
{
|
2018-08-05 15:56:21 +02:00
|
|
|
if (isset($_SESSION)) {
|
|
|
|
$return = defaults($_SESSION, $name, $defaults);
|
|
|
|
} else {
|
|
|
|
$return = $defaults;
|
|
|
|
}
|
|
|
|
|
|
|
|
return $return;
|
2018-02-09 04:49:49 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
public static function set($name, $value)
|
|
|
|
{
|
|
|
|
$_SESSION[$name] = $value;
|
|
|
|
}
|
|
|
|
}
|