ModuleSession
Package | framework.modules |
---|---|
Inheritance | class ModuleSession » Module » LsObject |
Since | 1.0 |
Source Code | /framework/classes/modules/session/Session.class.php |
Модуль для работы с сессиями
Выступает в качестве врапера для стандартного механизма сессий
Protected Properties
Property | Type | Description | Defined By |
---|---|---|---|
_aBehaviors | Список поведений в виде готовых объектов, формируется автоматически | LsObject | |
aBehaviors | array | Список поведений | LsObject |
aData | array | Данные сессии | ModuleSession |
aFlashUserAgent | array | Список user-agent'ов для флеш плеера | ModuleSession |
bIsInit | bool | Указывает на то, была ли проведенна инициализация модуля | Module |
bUseStandartSession | bool | Использовать или нет стандартный механизм сессий | ModuleSession |
sId | null|string | ID сессии | ModuleSession |
Public Methods
Method | Description | Defined By |
---|---|---|
AddBehaviorHook() | Добавляет хук поведения | LsObject |
AttachBehavior() | Присоединяет поведение к объекту | LsObject |
DetachBehavior() | Отсоединяет поведение от объекта | LsObject |
Drop() | Удаляет значение из сессии | ModuleSession |
DropSession() | Завершает сессию, дропая все данные | ModuleSession |
Get() | Получает значение из сессии | ModuleSession |
GetBehavior() | Возвращает объект поведения по его имени | LsObject |
GetBehaviors() | Возвращает все объекты поведения | LsObject |
GetData() | Получает разом все данные сессии | ModuleSession |
GetId() | Получает идентификатор текущей сессии | ModuleSession |
Init() | Инициализация модуля | ModuleSession |
RemoveBehaviorHook() | Удаляет хук поведения | LsObject |
RunBehaviorHook() | Запускает хук поведения на выполнение | LsObject |
Set() | Записывает значение в сессию | ModuleSession |
SetInit() | Помечает модуль как инициализированный | Module |
Shutdown() | Метод срабатывает при завершении работы ядра | Module |
__call() | Ставим хук на вызов неизвестного метода и считаем что хотели вызвать метод какого либо модуля | LsObject |
__clone() | Блокируем копирование/клонирование объекта | Module |
__construct() | Конструктор, запускается автоматически при создании объекта | LsObject |
__get() | Обработка доступа к объекты поведения | LsObject |
isInit() | Возвращает значение флага инициализации модуля | Module |
Protected Methods
Method | Description | Defined By |
---|---|---|
GenerateId() | Гинерирует уникальный идентификатор | ModuleSession |
PrepareBehaviors() | Инициализация поведений | LsObject |
ReadData() | Читает данные сессии в aData | ModuleSession |
Save() | Сохраняет данные сессии | ModuleSession |
SetId() | Устанавливает уникальный идентификатор сессии | ModuleSession |
Start() | Старт сессии | ModuleSession |
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: /framework/classes/modules/session/Session.class.php#222 (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: /framework/classes/modules/session/Session.class.php#250 (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: /framework/classes/modules/session/Session.class.php#163 (show)
protected function GenerateId()
{
return md5(func_generator() . time());
}
Гинерирует уникальный идентификатор
Get()
method
public mixed|null Get(string $sName)
| ||
$sName | string | Имя параметра |
{return} | mixed|null |
Source Code: /framework/classes/modules/session/Session.class.php#192 (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: /framework/classes/modules/session/Session.class.php#237 (show)
public function GetData()
{
if ($this->bUseStandartSession) {
return $_SESSION;
} else {
return $this->aData;
}
}
Получает разом все данные сессии
GetId()
method
public void GetId()
|
Source Code: /framework/classes/modules/session/Session.class.php#149 (show)
public function GetId()
{
if ($this->bUseStandartSession) {
return session_id();
} else {
return $this->sId;
}
}
Получает идентификатор текущей сессии
Init()
method
public void Init()
|
Source Code: /framework/classes/modules/session/Session.class.php#64 (show)
public function Init()
{
$this->bUseStandartSession = Config::Get('sys.session.standart');
/**
* Стартуем сессию
*/
$this->Start();
}
Инициализация модуля
ReadData()
method
protected void ReadData()
|
Source Code: /framework/classes/modules/session/Session.class.php#172 (show)
protected function ReadData()
{
$this->aData = $this->Cache_Get($this->sId);
}
Читает данные сессии в aData
Save()
method
protected void Save()
|
Source Code: /framework/classes/modules/session/Session.class.php#181 (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: /framework/classes/modules/session/Session.class.php#207 (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: /framework/classes/modules/session/Session.class.php#124 (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: /framework/classes/modules/session/Session.class.php#77 (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()) {
/**
* Попытка подменить идентификатор имени сессии через куку
*/
if (isset($_COOKIE[Config::Get('sys.session.name')]) and !is_string($_COOKIE[Config::Get('sys.session.name')])) {
die("Hacking attemp! Please check cookie PHP session name.");
}
/**
* Попытка подменить идентификатор имени сессии в реквесте
*/
$aRequest = array_merge($_GET, $_POST); // Исключаем попадаение $_COOKIE в реквест
if (@ini_get('session.use_only_cookies') === "0" and isset($aRequest[Config::Get('sys.session.name')]) and !is_string($aRequest[Config::Get('sys.session.name')])) {
die("Hacking attemp! Please check cookie PHP session name.");
}
/**
* Даем возможность флешу задавать 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 is_string(getRequest('SSID')) and preg_match("/^[\w\d]{5,40}$/",
getRequest('SSID'))
) {
session_id(getRequest('SSID'));
} else {
session_regenerate_id();
}
session_start();
}
} else {
$this->SetId();
$this->ReadData();
}
}
Старт сессии