|
|
|
<?php
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Copyright © 2021 ExacTI Technology Solutions. All rights reserved.
|
|
|
|
* GPLv3 General License.
|
|
|
|
* https://exacti.com.br
|
|
|
|
* Phacil PHP Framework - https://github.com/exacti/phacil-framework
|
|
|
|
*/
|
|
|
|
|
|
|
|
namespace Phacil\Framework;
|
|
|
|
|
|
|
|
final class Session {
|
PHP SESSION Prefix and IP check, engine constants and user_constants as a function for better memory usage, add SQLite 3 driver, new loader for aditional database method, new REST HTPP method check, updated template engines: Mustache 2.13, Smarty 3.1.34, Twig 1.42.5, Twig 2.12.5, add Twig 3 support to PHP 7.2+, define Dwoo template as deprecated, Caches and captcha bugfix in PHP 5.4.x
5 years ago
|
|
|
public $data = array();
|
|
|
|
private $name;
|
|
|
|
|
|
|
|
public function __construct() {
|
|
|
|
$this->name = ((defined('SESSION_PREFIX')) ? SESSION_PREFIX : 'SESS').(isset($_SERVER['REMOTE_ADDR']) ? md5($_SERVER['REMOTE_ADDR']) : md5(date("dmY")));
|
|
|
|
|
|
|
|
if (!session_id()) {
|
|
|
|
$this->openSession();
|
|
|
|
}
|
|
|
|
|
|
|
|
if(session_name() === $this->name) {
|
|
|
|
$this->data =& $_SESSION;
|
|
|
|
}else {
|
|
|
|
$this->openSession();
|
|
|
|
$this->data =& $_SESSION;
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
private function openSession() {
|
|
|
|
|
|
|
|
$this->closeSession();
|
|
|
|
|
|
|
|
ini_set('session.use_cookies', 'On');
|
|
|
|
ini_set('session.use_trans_sid', 'Off');
|
|
|
|
ini_set('session.cookie_httponly', 1);
|
|
|
|
if($this->isSecure())
|
|
|
|
ini_set('session.cookie_secure', 1);
|
|
|
|
|
|
|
|
session_set_cookie_params(0, '/');
|
|
|
|
//session_id(md5());
|
|
|
|
session_name($this->name);
|
|
|
|
session_start();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
private function closeSession() {
|
|
|
|
if (session_status() == PHP_SESSION_ACTIVE) {
|
|
|
|
session_unset();
|
|
|
|
session_destroy();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
private function isSecure() {
|
|
|
|
return (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') || $_SERVER['SERVER_PORT'] == 443;
|
|
|
|
}
|
|
|
|
}
|