ILIAS  release_5-2 Revision v5.2.25-18-g3f80b828510
ilSessionControl Class Reference
+ Collaboration diagram for ilSessionControl:

Static Public Member Functions

static checkExpiredSession ()
 checks for possibly expired session should be called from ilAuthUtils::__initAuth() so it's called before session_start() is called More...
 
static initSession ()
 mark session with type regarding to the context. More...
 
static handleLoginEvent ($a_login, ilAuthSession $auth_session)
 when current session is allowed to be created it marks it with type regarding to the sessions user context. More...
 
static handleLogoutEvent ()
 reset sessions type to unknown More...
 
static getExistingSessionCount (array $a_types)
 returns number of valid sessions relating to given session types More...
 
static getSettingFields ()
 returns the array of setting fields More...
 

Data Fields

const INTERNAL_DEBUG = false
 this controls the debuggin into a separate logfile (. More...
 
const DEFAULT_MAX_COUNT = 0
 default value for settings that have not been defined in setup or administration yet More...
 
const DEFAULT_MIN_IDLE = 15
 
const DEFAULT_MAX_IDLE = 30
 
const DEFAULT_MAX_IDLE_AFTER_FIRST_REQUEST = 1
 
const DEFAULT_ALLOW_CLIENT_MAINTENANCE = 1
 
const SESSION_TYPE_UNKNOWN = 0
 session types from which one is assigned to each session More...
 
const SESSION_TYPE_SYSTEM = 1
 
const SESSION_TYPE_ADMIN = 2
 
const SESSION_TYPE_USER = 3
 
const SESSION_TYPE_ANONYM = 4
 

Static Public Attributes

static $session_types_controlled
 

Static Private Member Functions

static checkCurrentSessionIsAllowed (ilAuthSession $auth, $a_user_id)
 checks wether the current session exhaust the limit of sessions when limit is reached it deletes "firstRequestAbidencer" and checks again when limit is still reached it deletes "oneMinIdleSession" and checks again when limit is still reached the current session will be logged out More...
 
static kickOneMinIdleSession (array $a_types)
 if sessions exist that relates to given session types and idled longer than min idle parameter, this method deletes one of these sessions More...
 
static kickFirstRequestAbidencer (array $a_types)
 kicks sessions of users that abidence after login so people could not login and go for coffe break ;-) More...
 
static isValidSession ($a_sid)
 checks if session exists for given id and if it is still valid More...
 
static removeSessionCookie ()
 removes a session cookie, so it is not sent by browser anymore More...
 
static checkAdministrationPermission ($a_user_id)
 checks wether a given user login relates to an user with administrative permissions More...
 
static debug ($a_debug_log_message)
 logs the given debug message in ilLog More...
 

Static Private Attributes

static $setting_fields
 all fieldnames that are saved in settings table More...
 
static $session_types_not_controlled
 all session types that will be involved when count of sessions will be determined or when idleing sessions will be destroyed More...
 

Detailed Description

Author
Bjoern Heyser bheys.nosp@m.er@d.nosp@m.ataba.nosp@m.y.de
Version
$Id$

Definition at line 11 of file class.ilSessionControl.php.

Member Function Documentation

◆ checkAdministrationPermission()

static ilSessionControl::checkAdministrationPermission (   $a_user_id)
staticprivate

checks wether a given user login relates to an user with administrative permissions

ilRbacSystem $rbacsystem

Parameters
integer$a_user_id
Returns
boolean access

Definition at line 480 of file class.ilSessionControl.php.

481  {
482  if( !(int)$a_user_id ) return false;
483 
484  global $rbacsystem;
485 
486  $access = $rbacsystem->checkAccessOfUser(
487  $a_user_id, 'read,visible', SYSTEM_FOLDER_ID
488  );
489 
490  return $access;
491  }

◆ checkCurrentSessionIsAllowed()

static ilSessionControl::checkCurrentSessionIsAllowed ( ilAuthSession  $auth,
  $a_user_id 
)
staticprivate

checks wether the current session exhaust the limit of sessions when limit is reached it deletes "firstRequestAbidencer" and checks again when limit is still reached it deletes "oneMinIdleSession" and checks again when limit is still reached the current session will be logged out

ilSetting $ilSetting ilAppEventHandler $ilAppEventHandler

Parameters
ilAuthSession$a_auth

Definition at line 234 of file class.ilSessionControl.php.

References $_SESSION, $ilSetting, array, ilSessionStatistics\createRawEntry(), ilAuthSession\logout(), ilUtil\redirect(), ilSession\SESSION_CLOSE_LIMIT, ilSession\setClosingContext(), and time.

235  {
236  global $ilSetting;
237 
238  $max_sessions = (int)$ilSetting->get('session_max_count', self::DEFAULT_MAX_COUNT);
239 
240  if($max_sessions > 0)
241  {
242  // get total number of sessions
243  $num_sessions = self::getExistingSessionCount(self::$session_types_controlled);
244 
245  self::debug(__METHOD__."--> total existing sessions (".$num_sessions.")");
246 
247  if(($num_sessions + 1) > $max_sessions)
248  {
249  self::debug(__METHOD__.' --> limit for session pool reached, but try kicking some first request abidencer');
250 
251  self::kickFirstRequestAbidencer(self::$session_types_controlled);
252 
253  // get total number of sessions again
254  $num_sessions = self::getExistingSessionCount(self::$session_types_controlled);
255 
256  if(($num_sessions + 1) > $max_sessions)
257  {
258  self::debug(__METHOD__.' --> limit for session pool still reached so try kick one min idle session');
259 
260  self::kickOneMinIdleSession(self::$session_types_controlled);
261 
262  // get total number of sessions again
263  $num_sessions = self::getExistingSessionCount(self::$session_types_controlled);
264 
265  if(($num_sessions + 1) > $max_sessions)
266  {
267  self::debug(__METHOD__.' --> limit for session pool still reached so logout session ('.session_id().') and trigger event');
268 
270 
271  // as the session is opened and closed in one request, there
272  // is no proper session yet and we have to do this ourselves
273  ilSessionStatistics::createRawEntry(session_id(), $_SESSION['SessionType'],
274  time(), $a_user_id);
275 
276  $auth->logout();
277 
278  // Trigger reachedSessionPoolLimit Event
279  global $ilAppEventHandler;
280  $ilAppEventHandler->raise(
281  'Services/Authentication', 'reachedSessionPoolLimit', array()
282  );
283 
284  // auth won't do this, we need to close session properly
285  // already done in new implementation
286  // session_destroy();
287 
288  ilUtil::redirect('login.php?reached_session_limit=true');
289  }
290  else
291  {
292  self::debug(__METHOD__.' --> limit of session pool not reached anymore after kicking one min idle session');
293  }
294  }
295  else
296  {
297  self::debug(__METHOD__.' --> limit of session pool not reached anymore after kicking some first request abidencer');
298  }
299  }
300  else
301  {
302  self::debug(__METHOD__.' --> limit for session pool not reached yet');
303  }
304  }
305  else
306  {
307  self::debug(__METHOD__.' --> limit for session pool not set so check is bypassed');
308  }
309  }
logout()
Logout user => stop session.
$_SESSION["AccountId"]
static createRawEntry($a_session_id, $a_session_type, $a_timestamp, $a_user_id)
Create raw data entry.
const SESSION_CLOSE_LIMIT
Create styles array
The data for the language used.
static setClosingContext($a_context)
set closing context (for statistics)
global $ilSetting
Definition: privfeed.php:17
Add data(end) time
Method that wraps PHPs time in order to allow simulations with the workflow.
static redirect($a_script)
http redirect to other script
+ Here is the call graph for this function:

◆ checkExpiredSession()

static ilSessionControl::checkExpiredSession ( )
static

checks for possibly expired session should be called from ilAuthUtils::__initAuth() so it's called before session_start() is called

ilSetting $ilSetting ilLanguage $lng ilAppEventHandler $ilAppEventHandler

Definition at line 85 of file class.ilSessionControl.php.

References $_COOKIE, $_GET, $ilSetting, $lng, array, isValidSession(), and ilUtil\redirect().

Referenced by ilAuthUtils\_initAuth().

86  {
87  global $ilSetting;
88 
89  // do not check session in fixed duration mode
90  if( $ilSetting->get('session_handling_type', 0) != 1 )
91  return;
92 
93  // check for expired sessions makes sense
94  // only when public section is not enabled
95  // because it is not possible to determine
96  // wether the sid cookie relates to a session of an
97  // authenticated user or a anonymous user
98  // when the session dataset has allready been deleted
99 
100  if(!$ilSetting->get("pub_section"))
101  {
102  global $lng;
103 
104  $sid = null;
105 
106  if( !isset($_COOKIE[session_name()]) || !strlen($_COOKIE[session_name()]) )
107  {
108  self::debug('Browser did not send a sid cookie');
109  }
110  else
111  {
112  $sid = $_COOKIE[session_name()];
113 
114  self::debug('Browser sent sid cookie with value ('.$sid.')');
115 
116  if(!self::isValidSession($sid))
117  {
118  self::debug('remove session cookie for ('.$sid.') and trigger event');
119 
120  // raw data will be updated (later) with garbage collection [destroyExpired()]
121 
122  self::removeSessionCookie();
123 
124  // Trigger expiredSessionDetected Event
125  global $ilAppEventHandler;
126  $ilAppEventHandler->raise(
127  'Services/Authentication', 'expiredSessionDetected', array()
128  );
129 
130  ilUtil::redirect('login.php?expired=true'.'&target='.$_GET['target']);
131  }
132  }
133  }
134  }
$_GET["client_id"]
Create styles array
The data for the language used.
global $ilSetting
Definition: privfeed.php:17
global $lng
Definition: privfeed.php:17
$_COOKIE['ilClientId']
Definition: BPMN2Parser.php:15
static redirect($a_script)
http redirect to other script
isValidSession($ext_uid, $soap_pw, $new_user)
isValidSession
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ debug()

static ilSessionControl::debug (   $a_debug_log_message)
staticprivate

logs the given debug message in ilLog

ilLog $ilLog

Parameters
string$a_debug_log_message

Definition at line 499 of file class.ilSessionControl.php.

References $ilLog, and Monolog\Handler\error_log().

500  {
501  global $ilLog;
502 
503  if(DEVMODE) $ilLog->write($a_debug_log_message, 'message');
504 
505  if(self::INTERNAL_DEBUG) error_log($a_debug_log_message."\n", 3, 'session.log');
506  }
+ Here is the call graph for this function:

◆ getExistingSessionCount()

static ilSessionControl::getExistingSessionCount ( array  $a_types)
static

returns number of valid sessions relating to given session types

ilDB $ilDB

Parameters
array$a_types
Returns
integer num_sessions

Definition at line 318 of file class.ilSessionControl.php.

References $ilDB, $query, $res, $row, array, ilDBConstants\FETCHMODE_OBJECT, and time.

Referenced by ilSessionStatisticsGUI\renderCurrentBasics().

319  {
320  global $ilDB;
321 
322  $ts = time();
323 
324  $query = "SELECT count(session_id) AS num_sessions FROM usr_session ".
325  "WHERE expires > %s ".
326  "AND ".$ilDB->in('type', $a_types, false, 'integer');
327 
328  $res = $ilDB->queryF($query, array('integer'), array($ts));
330 
331  return $row->num_sessions;
332  }
Create styles array
The data for the language used.
global $ilDB
Add data(end) time
Method that wraps PHPs time in order to allow simulations with the workflow.
+ Here is the caller graph for this function:

◆ getSettingFields()

static ilSessionControl::getSettingFields ( )
static

returns the array of setting fields

Returns
array setting_fields

Definition at line 513 of file class.ilSessionControl.php.

Referenced by ilSetup\checkClientSessionSettings(), ilSetupGUI\displaySessions(), ilSetup\getSessionSettings(), and ilSetup\setSessionSettings().

514  {
515  return self::$setting_fields;
516  }
+ Here is the caller graph for this function:

◆ handleLoginEvent()

static ilSessionControl::handleLoginEvent (   $a_login,
ilAuthSession  $auth_session 
)
static

when current session is allowed to be created it marks it with type regarding to the sessions user context.

when session is not allowed to be created it will be destroyed.

Definition at line 164 of file class.ilSessionControl.php.

References $_SESSION, $ilSetting, and ilObjUser\_lookupId().

Referenced by ilAuthFrontend\handleAuthenticationSuccess(), and ilAuthBase\loginObserver().

165  {
166  global $ilSetting;
167 
168  require_once 'Services/User/classes/class.ilObjUser.php';
169  $user_id = ilObjUser::_lookupId($a_login);
170 
171  // we need the session type for the session statistics
172  // regardless of the current session handling type
173  switch(true)
174  {
175  case isset($_ENV['SHELL']):
176  $type = self::SESSION_TYPE_SYSTEM;
177  break;
178 
179  case $user_id == ANONYMOUS_USER_ID:
180  $type = self::SESSION_TYPE_ANONYM;
181  break;
182 
183  case self::checkAdministrationPermission($user_id):
184  $type = self::SESSION_TYPE_ADMIN;
185  break;
186 
187  default:
188  $type = self::SESSION_TYPE_USER;
189  break;
190  }
191 
192  $_SESSION['SessionType'] = $type;
193  self::debug(__METHOD__." --> update sessions type to (".$type.")");
194 
195  // do not handle login event in fixed duration mode
196  if( $ilSetting->get('session_handling_type', 0) != 1 )
197  return true;
198 
199  if(in_array($type, self::$session_types_controlled))
200  {
201  return self::checkCurrentSessionIsAllowed($auth_session, $user_id);
202  }
203  }
$_SESSION["AccountId"]
static _lookupId($a_user_str)
Lookup id by login.
global $ilSetting
Definition: privfeed.php:17
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ handleLogoutEvent()

static ilSessionControl::handleLogoutEvent ( )
static

reset sessions type to unknown

Definition at line 208 of file class.ilSessionControl.php.

References $_SESSION, and $ilSetting.

Referenced by ilAuthBase\logoutObserver().

209  {
210  global $ilSetting;
211 
212  // do not handle logout event in fixed duration mode
213  if( $ilSetting->get('session_handling_type', 0) != 1 )
214  return;
215 
216  $_SESSION['SessionType'] = self::SESSION_TYPE_UNKNOWN;
217  self::debug(__METHOD__." --> reset sessions type to (".$_SESSION['SessionType'].")");
218 
219  // session_destroy() is called in auth, so raw data will be updated
220 
221  self::removeSessionCookie();
222  }
$_SESSION["AccountId"]
global $ilSetting
Definition: privfeed.php:17
+ Here is the caller graph for this function:

◆ initSession()

static ilSessionControl::initSession ( )
static

mark session with type regarding to the context.

should be called from ilAuthBase::initAuth()

Definition at line 140 of file class.ilSessionControl.php.

References $_SESSION, and $ilSetting.

Referenced by ilAuthBase\initAuth().

141  {
142  global $ilSetting;
143 
144  // do not init session type in fixed duration mode
145  if( $ilSetting->get('session_handling_type', 0) != 1 )
146  return;
147 
148  if( !isset($_SESSION['SessionType']) )
149  {
150  $_SESSION['SessionType'] = self::SESSION_TYPE_UNKNOWN;
151  self::debug(__METHOD__." --> init session with type (".$_SESSION['SessionType'].")");
152  }
153  else
154  {
155  self::debug(__METHOD__." --> keep sessions type on (".$_SESSION['SessionType'].")");
156  }
157  }
$_SESSION["AccountId"]
global $ilSetting
Definition: privfeed.php:17
+ Here is the caller graph for this function:

◆ isValidSession()

static ilSessionControl::isValidSession (   $a_sid)
staticprivate

checks if session exists for given id and if it is still valid

ilDB $ilDB ilSetting $ilSetting

Parameters
string$a_sid
Returns
boolean session_valid

Definition at line 421 of file class.ilSessionControl.php.

References $ilDB, $ilSetting, $query, $res, $row, array, and time.

422  {
423  global $ilDB, $ilSetting;
424 
425  $query = "SELECT session_id, expires FROM usr_session ".
426  "WHERE session_id = %s";
427 
428  $res = $ilDB->queryF($query, array('text'), array($a_sid));
429 
430  $ts = time();
431 
432  $sessions = array();
433 
434  while( $row = $ilDB->fetchAssoc($res) )
435  {
436  if( $row['expires'] > $ts )
437  {
438  self::debug(__METHOD__.' --> Found a valid session with id ('.$a_sid.')');
439  $sessions[] = $row;
440  }
441  else
442  {
443  self::debug(__METHOD__.' --> Found an expired session with id ('.$a_sid.')');
444  }
445  }
446 
447  if(count($sessions) == 1)
448  {
449  self::debug(__METHOD__.' --> Exact one valid session found for session id ('.$a_sid.')');
450 
451  return true;
452  }
453  else
454  {
455  if(count($sessions) > 1)
456  self::debug(__METHOD__.' --> Strange!!! More than one sessions found for given session id! ('.$a_sid.')');
457  else self::debug(__METHOD__.' --> No valid session found for session id ('.$a_sid.')');
458 
459  return false;
460  }
461  }
Create styles array
The data for the language used.
global $ilSetting
Definition: privfeed.php:17
global $ilDB
Add data(end) time
Method that wraps PHPs time in order to allow simulations with the workflow.

◆ kickFirstRequestAbidencer()

static ilSessionControl::kickFirstRequestAbidencer ( array  $a_types)
staticprivate

kicks sessions of users that abidence after login so people could not login and go for coffe break ;-)

ilDB $ilDB ilSetting $ilSetting

Returns
<type>

Definition at line 384 of file class.ilSessionControl.php.

References $ilDB, $ilSetting, $query, $res, $row, ilSession\_destroy(), array, ilDBConstants\FETCHMODE_OBJECT, ilSession\SESSION_CLOSE_FIRST, and time.

385  {
386  global $ilDB, $ilSetting;
387 
388  $max_idle_after_first_request = (int)$ilSetting->get('session_max_idle_after_first_request') * 60;
389 
390  if((int)$max_idle_after_first_request == 0) return;
391 
392  $query = "SELECT session_id,expires FROM usr_session WHERE " .
393  "(ctime - createtime) < %s " .
394  "AND (%s - createtime) > %s " .
395  "AND ".$ilDB->in('type', $a_types, false, 'integer');
396 
397  $res = $ilDB->queryF( $query,
398  array('integer', 'integer', 'integer'),
399  array($max_idle_after_first_request, time(), $max_idle_after_first_request)
400  );
401 
402  $session_ids = array();
403  while( $row = $res->fetchRow(ilDBConstants::FETCHMODE_OBJECT) )
404  {
405  $session_ids[$row->session_id] = $row->expires;
406  }
408 
409  self::debug(__METHOD__.' --> Finished kicking first request abidencer');
410  }
static _destroy($a_session_id, $a_closing_context=null, $a_expired_at=null)
Destroy session.
Create styles array
The data for the language used.
global $ilSetting
Definition: privfeed.php:17
global $ilDB
Add data(end) time
Method that wraps PHPs time in order to allow simulations with the workflow.
const SESSION_CLOSE_FIRST
+ Here is the call graph for this function:

◆ kickOneMinIdleSession()

static ilSessionControl::kickOneMinIdleSession ( array  $a_types)
staticprivate

if sessions exist that relates to given session types and idled longer than min idle parameter, this method deletes one of these sessions

ilDB $ilDB ilSetting $ilSetting

Parameters
array$a_types
Returns
boolean $deletionSuccess

Definition at line 344 of file class.ilSessionControl.php.

References $ilDB, $ilSetting, $query, $res, $row, ilSession\_destroy(), array, ilDBConstants\FETCHMODE_OBJECT, ilSession\SESSION_CLOSE_IDLE, and time.

345  {
346  global $ilDB, $ilSetting;
347 
348  $ts = time();
349  $min_idle = (int)$ilSetting->get('session_min_idle', self::DEFAULT_MIN_IDLE) * 60;
350  $max_idle = (int)$ilSetting->get('session_max_idle', self::DEFAULT_MAX_IDLE) * 60;
351 
352  $query = "SELECT session_id,expires FROM usr_session WHERE expires >= %s " .
353  "AND (expires - %s) < (%s - %s) " .
354  "AND ".$ilDB->in('type', $a_types, false, 'integer') . " ORDER BY expires";
355 
356  $res = $ilDB->queryF(
357  $query,
358  array('integer', 'integer', 'integer', 'integer'),
359  array($ts, $ts, $max_idle, $min_idle)
360  );
361 
362  while( $row = $res->fetchRow(ilDBConstants::FETCHMODE_OBJECT) )
363  {
365 
366  self::debug(__METHOD__.' --> successfully deleted one min idle session');
367 
368  return true;
369  }
370 
371  self::debug(__METHOD__.' --> no min idle session available for deletion');
372 
373  return false;
374  }
const SESSION_CLOSE_IDLE
static _destroy($a_session_id, $a_closing_context=null, $a_expired_at=null)
Destroy session.
Create styles array
The data for the language used.
global $ilSetting
Definition: privfeed.php:17
global $ilDB
Add data(end) time
Method that wraps PHPs time in order to allow simulations with the workflow.
+ Here is the call graph for this function:

◆ removeSessionCookie()

static ilSessionControl::removeSessionCookie ( )
staticprivate

removes a session cookie, so it is not sent by browser anymore

Definition at line 466 of file class.ilSessionControl.php.

References ilUtil\setCookie().

467  {
468  ilUtil::setCookie(session_name(),'deleted',true,true);
469  self::debug('Session cookie has been removed');
470  }
static setCookie($a_cookie_name, $a_cookie_value='', $a_also_set_super_global=true, $a_set_cookie_invalid=false)
+ Here is the call graph for this function:

Field Documentation

◆ $session_types_controlled

ilSessionControl::$session_types_controlled
static
Initial value:
self::SESSION_TYPE_USER,
self::SESSION_TYPE_ANONYM
)

Definition at line 59 of file class.ilSessionControl.php.

Referenced by ilSession\_writeData(), ilSessionStatistics\getNumberOfActiveRawSessions(), ilSessionStatistics\getRawData(), and ilSessionStatisticsGUI\renderCurrentBasics().

◆ $session_types_not_controlled

array ilSessionControl::$session_types_not_controlled
staticprivate
Initial value:
self::SESSION_TYPE_UNKNOWN,
self::SESSION_TYPE_SYSTEM,
self::SESSION_TYPE_ADMIN
)

all session types that will be involved when count of sessions will be determined or when idleing sessions will be destroyed

all session types that will be ignored when count of sessions will be determined or when idleing sessions will be destroyed

Definition at line 70 of file class.ilSessionControl.php.

◆ $setting_fields

array ilSessionControl::$setting_fields
staticprivate
Initial value:
'session_max_count',
'session_min_idle',
'session_max_idle',
'session_max_idle_after_first_request',
'session_allow_client_maintenance',
'session_handling_type'
)

all fieldnames that are saved in settings table

Definition at line 34 of file class.ilSessionControl.php.

◆ DEFAULT_ALLOW_CLIENT_MAINTENANCE

const ilSessionControl::DEFAULT_ALLOW_CLIENT_MAINTENANCE = 1

◆ DEFAULT_MAX_COUNT

const ilSessionControl::DEFAULT_MAX_COUNT = 0

default value for settings that have not been defined in setup or administration yet

Definition at line 23 of file class.ilSessionControl.php.

Referenced by ilObjUserFolderGUI\generalSettingsObject(), ilSessionStatistics\getLimitForSlot(), ilSetup\getSessionSettings(), ilSessionStatisticsGUI\renderCurrentBasics(), and ilSessionStatistics\updateLimitLog().

◆ DEFAULT_MAX_IDLE

◆ DEFAULT_MAX_IDLE_AFTER_FIRST_REQUEST

const ilSessionControl::DEFAULT_MAX_IDLE_AFTER_FIRST_REQUEST = 1

◆ DEFAULT_MIN_IDLE

◆ INTERNAL_DEBUG

const ilSessionControl::INTERNAL_DEBUG = false

this controls the debuggin into a separate logfile (.

/session.log)

Definition at line 17 of file class.ilSessionControl.php.

◆ SESSION_TYPE_ADMIN

const ilSessionControl::SESSION_TYPE_ADMIN = 2

Definition at line 49 of file class.ilSessionControl.php.

◆ SESSION_TYPE_ANONYM

const ilSessionControl::SESSION_TYPE_ANONYM = 4

Definition at line 51 of file class.ilSessionControl.php.

◆ SESSION_TYPE_SYSTEM

const ilSessionControl::SESSION_TYPE_SYSTEM = 1

Definition at line 48 of file class.ilSessionControl.php.

◆ SESSION_TYPE_UNKNOWN

const ilSessionControl::SESSION_TYPE_UNKNOWN = 0

session types from which one is assigned to each session

Definition at line 47 of file class.ilSessionControl.php.

◆ SESSION_TYPE_USER

const ilSessionControl::SESSION_TYPE_USER = 3

Definition at line 50 of file class.ilSessionControl.php.


The documentation for this class was generated from the following file: