ModuleSession
Package | engine.modules |
---|---|
Inheritance | class ModuleSession » Module » LsObject |
Since | 1.0 |
Source Code | /engine/modules/session/Session.class.php |
Модуль для работы с сессиями
Выступает в качестве врапера для стандартного механизма сессий
Protected Properties
Property | Type | Description | Defined 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
Method | Description | Defined 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
Method | Description | Defined 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();
}
}
Старт сессии