public static function STARTSESSION($SetSessionName = NULL) { ///######## IF THE SESSION STATE IS INACTIVE if (self::$sessionState == self::SESSION_NOT_STARTED) { ///######## IF A SESSION COOKIE SHOULD BE SET if (self::$setsessioncookie === true) { ///######## SETTINGS ARRAY $SessionSettings = array('session.cookie_lifetime' => self::$limit, 'session.cookie_domain' => self::$domain, 'session.cookie_secure' => self::$secure, 'session.cookie_httponly' => self::$httponly); ///########================================================== ///######## SET THE SESSION COOKIE PARAMETERS ///########================================================== ///######## RUN THROUGH ALL SETTINGS foreach ($SessionSettings as $Option => $Setting) { ///######## IF THE OPTION IS NOT EMPTY if ($Setting !== NULL) { ///######## SET THE SETTING ini_set($Option, $Setting); } } ///########================================================== } ///########================================================== ///######## SET THE SESSION NAME ///########================================================== ///######## IF A SESSION NAME HAS BEEN SET if ($SetSessionName !== NULL) { ///######## SET A SESSION NAME TO THE CLASS self::$SessionName = $SetSessionName; ///######## SET THE SESSION NAME session_name($SetSessionName); } else { ///######## SET A DEFAULT SESSION NAME session_name(self::$SessionName); } ///########================================================== ///########================================================== ///######## SET THE SESSION RUNTIME ///########================================================== ini_set('session.gc_probability', 0); ///######## START THE SESSION self::$sessionState = @session_start(); ///######## OPTIONALLY RESTART AN EXISTING SESSION self::RestoreSession(); ///########================================================== ///######## PROTECT THE SESSION AGAINST HIJACKING if (self::preventHijacking() === false) { ///######## RESET THE SESSION $_SESSION = array(); $_SESSION['SessionIPaddress'] = self::$CurrentIP; $_SESSION['SessionuserAgent'] = self::$CurrentBrowser; ///####### SET THE SESSION COOKIE self::SaveSession(); } else { ///######## LOAD THE SESSION ID self::$CurrentSession = session_id(); } } ///######## IF THE SESSION ID HAS NOT YET BEEN DEFINED if (defined('SESSION_ID') === false) { ///######## DEFINE THE SESSION ID define('SESSION_ID', self::$CurrentSession); } ///########================================================== ///######## GET THE SESSION STATE ///########================================================== return self::$sessionState; ///########================================================== }