<?php
class Session {
	public $data = array();

	public function __construct($session_name = 'PHPSESSID') {
		if (!session_id()) 
		{
			ini_set('session.use_cookies', 'On');
			ini_set('session.use_trans_sid', 'Off');
			ini_set('session.gc_maxlifetime', 432000);
			ini_set('session.cookie_lifetime', 432000);
	
			// Se o nome da sessão for diferente, copie os dados da sessão padrão
			if ($session_name !== 'PHPSESSID') 
			{
				session_start();
				$defaultSessionData = $_SESSION;
				session_write_close();
			}

			// Definindo os parâmetros do cookie de sessão
			$secure = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on';
			$httponly = true;  
			$samesite = 'Lax'; 
	
			session_name($session_name);
			session_set_cookie_params([
                'lifetime' => 432000,      
                'path'     => '/',         
                'domain'   => '',          
                'secure'   => $secure,     
                'httponly' => $httponly,   
                'samesite' => $samesite    
            ]);
		
			session_start();
	
			if (!empty($defaultSessionData)) 
			{
				$_SESSION = array_merge($_SESSION, $defaultSessionData);
			}
		}
	
		$this->data =& $_SESSION;
	}

	function getId() {
		return session_id();
	}
}
