1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
session.php
См. документацию.
1<?
2
9{
10 const GC_AGENT_NAME = "CSecuritySession::CleanUpAgent();";
11 protected static $oldSessionId = null;
12
13 public static function Init()
14 {
16 {
17 static::registerHandler('CSecuritySessionVirtual');
18 }
20 {
21 static::registerHandler('CSecuritySessionMC');
22 }
24 {
25 static::registerHandler('CSecuritySessionRedis');
26 }
27 else
28 {
29 static::registerHandler('CSecuritySessionDB');
30 }
31 }
32
36 public static function triggerFatalError($pMessage = "")
37 {
38 CHTTP::SetStatus("500 Internal Server Error");
39 trigger_error($pMessage, E_USER_ERROR);
40 die();
41 }
42
46 public static function CleanUpAgent()
47 {
48 $maxlifetime = intval(ini_get("session.gc_maxlifetime"));
49
50 if($maxlifetime && !CSecuritySessionMC::isStorageEnabled())
51 {
52 CSecuritySessionDB::gc($maxlifetime);
53 }
54
55 return self::GC_AGENT_NAME;
56 }
57
58 public static function UpdateSessID()
59 {
60 $oldSessionId = session_id();
61 session_regenerate_id();
62 $newSessionId = session_id();
63
64 //Delay database update to session write moment
65 if(!self::$oldSessionId)
66 self::$oldSessionId = $oldSessionId;
67 }
68
72 public static function isOldSessionIdExist()
73 {
74 return self::$oldSessionId && self::checkSessionId(self::$oldSessionId);
75 }
76
81 public static function getOldSessionId($cleanUp = false)
82 {
83 $result = self::$oldSessionId;
84 if ($cleanUp)
85 self::$oldSessionId = null;
86
87 return $result;
88 }
89
94 public static function checkSessionId($id)
95 {
96 return (
97 $id
98 && is_string($id)
99 && preg_match('/^[\da-z\-,]{6,}$/iD', $id)
100 );
101 }
102
103 public static function activate()
104 {
105 COption::SetOptionString("security", "session", "Y");
106 session_write_close();
108 session_start();
109 CAgent::RemoveAgent(self::GC_AGENT_NAME, "security");
110 CAgent::Add(array(
111 "NAME" => self::GC_AGENT_NAME,
112 "MODULE_ID" => "security",
113 "ACTIVE" => "Y",
114 "AGENT_INTERVAL" => 1800,
115 "IS_PERIOD" => "N",
116 ));
117 }
118
119 public static function deactivate()
120 {
121 COption::SetOptionString("security", "session", "N");
122 CAgent::RemoveAgent(self::GC_AGENT_NAME, "security");
123 }
124
125 protected static function registerHandler($class)
126 {
127 if(!class_exists($class))
128 {
130 sprintf('Session handler "%s" was not found.', $class)
131 );
132 }
133
134 if(!$class::Init())
135 {
137 sprintf('Failed to initialize "%s" session handler.', $class)
138 );
139 }
140
141 $handler = new CSecuritySessionHandler($class);
142 session_set_save_handler($handler, true);
143 }
144
145 public static function createSid()
146 {
147 return \Bitrix\Main\Security\Random::getString(32, true);
148 }
149}
static SetStatus($status)
Определения http.php:476
static gc($maxLifeTime)
Определения session_db.php:139
Определения session.php:9
const GC_AGENT_NAME
Определения session.php:10
static registerHandler($class)
Определения session.php:125
static isOldSessionIdExist()
Определения session.php:72
static getOldSessionId($cleanUp=false)
Определения session.php:81
static deactivate()
Определения session.php:119
static activate()
Определения session.php:103
static checkSessionId($id)
Определения session.php:94
static createSid()
Определения session.php:145
static CleanUpAgent()
Определения session.php:46
static UpdateSessID()
Определения session.php:58
static Init()
Определения session.php:13
static $oldSessionId
Определения session.php:11
static triggerFatalError($pMessage="")
Определения session.php:36
static isStorageEnabled()
Определения session_mc.php:206
static isStorageEnabled()
Определения session_redis.php:213
static isStorageEnabled()
Определения session_virtual.php:19
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$result
Определения get_property_values.php:14
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения prolog_main_admin.php:393
die
Определения quickway.php:367