Exemplo n.º 1
0
 /**
  * Starts session
  * @param array $request Request data
  */
 public static function start($request = array())
 {
     $sess_id = self::getId();
     if (empty($_COOKIE[self::$_name]) && empty($sess_id)) {
         self::setId(self::_generateId());
     }
     // Force transfer session id to cookies if it passed via url
     if (!empty($request[self::$_name])) {
         self::setId($request[self::$_name], false);
     }
     session_name(self::$_name);
     session_start();
     // Session checker (for external services, returns "OK" if session exists, empty - otherwise)
     if (!empty($request['check_session'])) {
         die(!empty($_SESSION) ? 'OK' : '');
     }
     // Validate session
     if (!defined('SKIP_SESSION_VALIDATION')) {
         $validator_data = self::getValidatorData();
         if (!isset($_SESSION['_validator_data'])) {
             $_SESSION['_validator_data'] = $validator_data;
         } else {
             if ($_SESSION['_validator_data'] != $validator_data) {
                 session_regenerate_id();
                 $_SESSION = array();
             }
         }
     }
     // _SESSION superglobal variable populates here, so remove it from global scope if needed
     if (Bootstrap::getIniParam('register_globals')) {
         Bootstrap::unregisterGlobals('_SESSION');
     }
 }