ModuleSession

Package engine.modules
Inheritance class ModuleSession » Module » LsObject
Since 1.0
Source Code /engine/modules/session/Session.class.php
Модуль для работы с сессиями Выступает в качестве врапера для стандартного механизма сессий

Protected Properties

Hide inherited properties

PropertyTypeDescriptionDefined By
aData array Данные сессии ModuleSession
aFlashUserAgent array Список user-agent'ов для флеш плеера ModuleSession
bIsInit bool Указывает на то, была ли проведенна инициализация модуля Module
bUseStandartSession bool Использовать или нет стандартный механизм сессий ModuleSession
oEngine Engine Объект ядра Module
sId null|string ID сессии ModuleSession

Public Methods

Hide inherited methods

MethodDescriptionDefined By
Drop() Удаляет значение из сессии ModuleSession
DropSession() Завершает сессию, дропая все данные ModuleSession
Get() Получает значение из сессии ModuleSession
GetData() Получает разом все данные сессии ModuleSession
GetId() Получает идентификатор текущей сессии ModuleSession
Init() Инициализация модуля ModuleSession
Set() Записывает значение в сессию ModuleSession
SetInit() Помечает модуль как инициализированный Module
Shutdown() Метод срабатывает при завершении работы ядра Module
__call() Ставим хук на вызов неизвестного метода и считаем что хотели вызвать метод какого либо модуля Module
__construct() При создании модуля передаем объект ядра Module
isInit() Возвращает значение флага инициализации модуля Module

Protected Methods

Hide inherited methods

MethodDescriptionDefined By
GenerateId() Гинерирует уникальный идентификатор ModuleSession
ReadData() Читает данные сессии в aData ModuleSession
Save() Сохраняет данные сессии ModuleSession
SetId() Устанавливает уникальный идентификатор сессии ModuleSession
Start() Старт сессии ModuleSession
__clone() Блокируем копирование/клонирование объекта Module

Property Details

aData property
protected array $aData;

Данные сессии

aFlashUserAgent property
protected array $aFlashUserAgent;

Список user-agent'ов для флеш плеера Используется для передачи ID сессии при обращениии к сайту через flash, например, загрузка файлов через flash

bUseStandartSession property
protected bool $bUseStandartSession;

Использовать или нет стандартный механизм сессий ВНИМАНИЕ! Не рекомендуется ставить false - т.к. этот режим до конца не протестирован

sId property
protected null|string $sId;

ID сессии

Method Details

Drop() method
public void Drop(string $sName)
$sName string Имя параметра
Source Code: /engine/modules/session/Session.class.php#183 (show)
public function Drop($sName) {
    if (
$this->bUseStandartSession) {
        unset(
$_SESSION[$sName]);
    } else {
        unset(
$this->aData[$sName]);
        
$this->Save();
    }
}

Удаляет значение из сессии

DropSession() method
public void DropSession()
Source Code: /engine/modules/session/Session.class.php#207 (show)
public function DropSession() {
    if (
$this->bUseStandartSession) {
        unset(
$_SESSION);
        
session_destroy();
    } else {
        unset(
$this->sId);
        unset(
$this->aData);
        
setcookie(
            
Config::Get('sys.session.name'),
            
'',1,
            
Config::Get('sys.session.path'),
            
Config::Get('sys.session.host')
        );
    }
}

Завершает сессию, дропая все данные

GenerateId() method
protected string GenerateId()
{return} string
Source Code: /engine/modules/session/Session.class.php#134 (show)
protected function GenerateId() {
    return 
md5(func_generator().time());
}

Гинерирует уникальный идентификатор

Get() method
public mixed|null Get(string $sName)
$sName string Имя параметра
{return} mixed|null
Source Code: /engine/modules/session/Session.class.php#157 (show)
public function Get($sName) {
    if (
$this->bUseStandartSession) {
        return isset(
$_SESSION[$sName]) ? $_SESSION[$sName] : null;
    } else {
        return isset(
$this->aData[$sName]) ? $this->aData[$sName] : null;
    }
}

Получает значение из сессии

GetData() method
public array GetData()
{return} array
Source Code: /engine/modules/session/Session.class.php#196 (show)
public function GetData() {
    if (
$this->bUseStandartSession) {
        return 
$_SESSION;
    } else {
        return 
$this->aData;
    }
}

Получает разом все данные сессии

GetId() method
public void GetId()
Source Code: /engine/modules/session/Session.class.php#122 (show)
public function GetId() {
    if (
$this->bUseStandartSession) {
        return 
session_id();
    } else {
        return 
$this->sId;
    }
}

Получает идентификатор текущей сессии

Init() method
public void Init()
Source Code: /engine/modules/session/Session.class.php#59 (show)
public function Init() {
    
$this->bUseStandartSession Config::Get('sys.session.standart');
    
/**
     * Стартуем сессию
     */
    
$this->Start();
}

Инициализация модуля

ReadData() method
protected void ReadData()
Source Code: /engine/modules/session/Session.class.php#141 (show)
protected function ReadData() {
    
$this->aData=$this->Cache_Get($this->sId);
}

Читает данные сессии в aData

Save() method
protected void Save()
Source Code: /engine/modules/session/Session.class.php#148 (show)
protected function Save() {
    
$this->Cache_Set($this->aData,$this->sId,array(),Config::Get('sys.session.timeout'));
}

Сохраняет данные сессии

Set() method
public void Set(string $sName, mixed $data)
$sName string Имя параметра
$data mixed Данные
Source Code: /engine/modules/session/Session.class.php#170 (show)
public function Set($sName,$data) {
    if (
$this->bUseStandartSession) {
        
$_SESSION[$sName]=$data;
    } else {
        
$this->aData[$sName]=$data;
        
$this->Save();
    }
}

Записывает значение в сессию

SetId() method
protected void SetId()
Source Code: /engine/modules/session/Session.class.php#99 (show)
protected function SetId() {
    
/**
     * Если идентификатор есть в куках то берем его
     */
    
if (isset($_COOKIE[Config::Get('sys.session.name')])) {
        
$this->sId=$_COOKIE[Config::Get('sys.session.name')];
    } else {
        
/**
         * Иначе создаём новый и записываем его в куку
         */
        
$this->sId=$this->GenerateId();
        
setcookie(
            
Config::Get('sys.session.name'),
            
$this->sId,time()+Config::Get('sys.session.timeout'),
            
Config::Get('sys.session.path'),
            
Config::Get('sys.session.host')
        );
    }
}

Устанавливает уникальный идентификатор сессии

Start() method
protected void Start()
Source Code: /engine/modules/session/Session.class.php#70 (show)
protected function Start() {
    if (
$this->bUseStandartSession) {
        
session_name(Config::Get('sys.session.name'));
        
session_set_cookie_params(
            
Config::Get('sys.session.timeout'),
            
Config::Get('sys.session.path'),
            
Config::Get('sys.session.host')
        );
        if(!
session_id()) {
            
/**
             * Даем возможность флешу задавать id сессии
             */
            
$sUserAgent=isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : null;
            if (
$sUserAgent and (in_array($sUserAgent,$this->aFlashUserAgent) or strpos($sUserAgent,"Adobe Flash Player")===0) and preg_match("/^[\w\d]{5,40}$/",getRequest('SSID'))) {
                
session_id(getRequest('SSID'));
            } else {
                
session_regenerate_id();
            }
            
session_start();
        }
    } else {
        
$this->SetId();
        
$this->ReadData();
    }
}

Старт сессии