public static function sesion() { #Apagar o mostrar los warnings de PHP if (DEV_SHOWPHPERRORS) { error_reporting(-1); } else { error_reporting(0); } #Que la cookie de sesión no pueda accederse por javascript. $httponly = true; #Configuracion para calcular el ID de la sesion $session_hash = 'sha512'; if (in_array($session_hash, hash_algos())) { ini_set('session.hash_function', $session_hash); } ini_set('session.hash_bits_per_character', 5); #Fuerza a la sesión para que sólo use cookies, no variables URL. ini_set('session.use_only_cookies', 1); #Define el tiempo en que una sesion puede seguir activa sin tener algún cambio ini_set('session.gc_maxlifetime', SESSION_INACTIVITY); #Asigna el directorio de sesiones dentro de la ruta de la APP session_save_path(str_replace("_frame", "_sessions", realpath(dirname(__FILE__)))); #Configura los parametros de la sesion $cookieParams = session_get_cookie_params(); if ($cookieParams["lifetime"] == 0) { $cookieParams["lifetime"] = 28800; } #Se mantiene una sesion activa hasta por 8 horas en el navegador #Configura los parámetros session_set_cookie_params($cookieParams["lifetime"], $cookieParams["path"], $cookieParams["domain"], SESSION_SSLONLY, $httponly); #Definir el tipo de manejador de las sesiones if (strtoupper(trim(SESSION_TYPE)) == "FILE") { session_set_save_handler(new SesionFile(), true); } if (strtoupper(trim(SESSION_TYPE)) == "DB") { session_set_save_handler(new SesionDB(), true); } #Definir el nombre de la sesion segun la configuracion de la APP session_name(SESSION_NAME); #Ahora podemos iniciar la sesión session_start(); #Por default la sesion lleva informacion del navegador, sistema e ip y un token con esa información (tratando de hacer unico ese identificador) $_SESSION['__token'] = md5(Framework::tokenCliente()); }