1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
session_db.php
См. документацию.
1<?
2
4
11{
12 protected static $isReadOnly = false;
13 protected static $sessionId = null;
14 protected static $hasFailedRead = false;
18 public static function Init()
19 {
20 self::$isReadOnly = defined('BX_SECURITY_SESSION_READONLY');
21 return true;
22 }
23
29 public static function open($savePath, $sessionName)
30 {
31 return true;
32 }
33
37 public static function close()
38 {
39 if (!self::$isReadOnly && static::isValidId(static::$sessionId))
40 {
41 SessionTable::unlock(static::$sessionId);
42 }
43
44
45 return true;
46 }
47
52 public static function read($id)
53 {
54 if (!self::isValidId($id))
55 return "";
56
57 if (!self::$isReadOnly && !SessionTable::lock($id, 60/*TODO: timelimit from php.ini?*/))
58 CSecuritySession::triggerFatalError('Unable to get session lock within 60 seconds.');
59
60 self::$sessionId = $id;
61 $sessionRow = SessionTable::getRow(array(
62 'select' => array('SESSION_DATA'),
63 'filter' => array('=SESSION_ID' => $id)
64 ));
65
66 if ($sessionRow && isset($sessionRow['SESSION_DATA']))
67 {
68 return base64_decode($sessionRow['SESSION_DATA']);
69 }
70 else
71 {
72 if (!self::$hasFailedRead)
73 {
74 AddEventHandler("main", "OnPageStart", array("CSecuritySession", "UpdateSessID"));
75 self::$hasFailedRead = true;
76 }
77 }
78
79 return '';
80 }
81
87 public static function write($id, $sessionData)
88 {
89 if(!self::isValidId($id))
90 return false;
91
92 if (self::$isReadOnly)
93 {
95 {
96 return true;
97 }
98 }
99
101 $oldSessionId = CSecuritySession::getOldSessionId(true);
102 else
103 $oldSessionId = $id;
104
105 SessionTable::delete($oldSessionId);
106 $result = SessionTable::add(array(
107 'SESSION_ID' => $id,
108 'TIMESTAMP_X' => new Bitrix\Main\Type\DateTime,
109 'SESSION_DATA' => base64_encode($sessionData),
110 ));
111
112 return $result->isSuccess();
113 }
114
119 public static function destroy($id)
120 {
121 if(!self::isValidId($id))
122 return false;
123
124 if (self::$isReadOnly)
125 return false;
126
127 SessionTable::delete($id);
128
130 SessionTable::delete(CSecuritySession::getOldSessionId(true));
131
132 return true;
133 }
134
139 public static function gc($maxLifeTime)
140 {
141 SessionTable::deleteOlderThan($maxLifeTime);
142 return true;
143 }
144
149 protected static function isValidId($pId)
150 {
151 return (
152 $pId
153 && is_string($pId)
154 && preg_match('/^[\da-z\-,]{6,}$/iD', $pId)
155 );
156 }
157
158}
static destroy($id)
Определения session_db.php:119
static close()
Определения session_db.php:37
static $isReadOnly
Определения session_db.php:12
static isValidId($pId)
Определения session_db.php:149
static $sessionId
Определения session_db.php:13
static read($id)
Определения session_db.php:52
static gc($maxLifeTime)
Определения session_db.php:139
static $hasFailedRead
Определения session_db.php:14
static write($id, $sessionData)
Определения session_db.php:87
static Init()
Определения session_db.php:18
static open($savePath, $sessionName)
Определения session_db.php:29
static isOldSessionIdExist()
Определения session.php:72
static getOldSessionId($cleanUp=false)
Определения session.php:81
static triggerFatalError($pMessage="")
Определения session.php:36
</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
AddEventHandler($FROM_MODULE_ID, $MESSAGE_ID, $CALLBACK, $SORT=100, $FULL_PATH=false)
Определения tools.php:5165