Joomla Platform  13.1
Documentation des API du framework Joomla Platform
 Tout Classes Espaces de nommage Fichiers Fonctions Variables Pages
Référence de la classe JSession

Liste de tous les membres

Fonctions membres publiques

 __construct ($store= 'none', array $options=array())
 __get ($name)
 getState ()
 getExpire ()
 getToken ($forceNew=false)
 hasToken ($tCheck, $forceExpire=true)
 getIterator ()
 getName ()
 getId ()
 isActive ()
 isNew ()
 initialise (JInput $input, JEventDispatcher $dispatcher=null)
 get ($name, $default=null, $namespace= 'default')
 set ($name, $value=null, $namespace= 'default')
 has ($name, $namespace= 'default')
 clear ($name, $namespace= 'default')
 start ()
 destroy ()
 restart ()
 fork ()
 close ()

Fonctions membres publiques statiques

static getInstance ($handler, $options)
static getFormToken ($forceNew=false)
static checkToken ($method= 'post')
static getStores ()

Fonctions membres protégées

 _start ()
 _setCookieParams ()
 _createToken ($length=32)
 _setCounter ()
 _setTimers ()
 _setOptions (array $options)
 _validate ($restart=false)

Attributs protégés

 $_state = 'inactive'
 $_expire = 15
 $_store = null
 $_security = array('fix_browser')
 $_force_ssl = false
 $storeName

Attributs protégés statiques

static $instance

Attributs privés

 $_input = null
 $_dispatcher = null

Description détaillée

Définition à la ligne 24 du fichier session.php.


Documentation des constructeurs et destructeur

JSession::__construct (   $store = 'none',
array  $options = array() 
)

Constructor

Paramètres:
string$storeThe type of storage for the session.
array$optionsOptional parameters
Depuis:
11.1

Définition à la ligne 114 du fichier session.php.

Références JSessionStorage\getInstance().

{
// Need to destroy any existing sessions started with session.auto_start
if (session_id())
{
session_unset();
session_destroy();
}
// Disable transparent sid support
ini_set('session.use_trans_sid', '0');
// Only allow the session ID to come from cookies and nothing else.
ini_set('session.use_only_cookies', '1');
// Create handler
$this->_store = JSessionStorage::getInstance($store, $options);
$this->storeName = $store;
// Set options
$this->_setOptions($options);
$this->_setCookieParams();
$this->_state = 'inactive';
}

+ Voici le graphe d'appel pour cette fonction :


Documentation des fonctions membres

JSession::__get (   $name)

Magic method to get read-only access to properties.

Paramètres:
string$nameName of property to retrieve
Renvoie:
mixed The value of the property
Depuis:
12.2

Définition à la ligne 151 du fichier session.php.

{
if ($name === 'storeName')
{
return $this->$name;
}
if ($name === 'state' || $name === 'expire')
{
$property = '_' . $name;
return $this->$property;
}
}
JSession::_createToken (   $length = 32)
protected

Create a token-string

Paramètres:
integer$lengthLength of string
Renvoie:
string Generated token
Depuis:
11.1

Définition à la ligne 830 du fichier session.php.

{
static $chars = '0123456789abcdef';
$max = strlen($chars) - 1;
$token = '';
$name = session_name();
for ($i = 0; $i < $length; ++$i)
{
$token .= $chars[(rand(0, $max))];
}
return md5($token . $name);
}
JSession::_setCookieParams ( )
protected

Set session cookie parameters

Renvoie:
void
Depuis:
11.1

Définition à la ligne 799 du fichier session.php.

Références JFactory\getConfig().

{
$cookie = session_get_cookie_params();
if ($this->_force_ssl)
{
$cookie['secure'] = true;
}
$config = JFactory::getConfig();
if ($config->get('cookie_domain', '') != '')
{
$cookie['domain'] = $config->get('cookie_domain');
}
if ($config->get('cookie_path', '') != '')
{
$cookie['path'] = $config->get('cookie_path');
}
session_set_cookie_params($cookie['lifetime'], $cookie['path'], $cookie['domain'], $cookie['secure'], true);
}

+ Voici le graphe d'appel pour cette fonction :

JSession::_setCounter ( )
protected

Set counter of session usage

Renvoie:
boolean True on success
Depuis:
11.1

Définition à la ligne 851 du fichier session.php.

{
$counter = $this->get('session.counter', 0);
++$counter;
$this->set('session.counter', $counter);
return true;
}
JSession::_setOptions ( array  $options)
protected

Set additional session options

Paramètres:
array$optionsList of parameter
Renvoie:
boolean True on success
Depuis:
11.1

Définition à la ligne 893 du fichier session.php.

{
// Set name
if (isset($options['name']))
{
session_name(md5($options['name']));
}
// Set id
if (isset($options['id']))
{
session_id($options['id']);
}
// Set expire time
if (isset($options['expire']))
{
$this->_expire = $options['expire'];
}
// Get security options
if (isset($options['security']))
{
$this->_security = explode(',', $options['security']);
}
if (isset($options['force_ssl']))
{
$this->_force_ssl = (bool) $options['force_ssl'];
}
// Sync the session maxlifetime
ini_set('session.gc_maxlifetime', $this->_expire);
return true;
}
JSession::_setTimers ( )
protected

Set the session timers

Renvoie:
boolean True on success
Depuis:
11.1

Définition à la ligne 867 du fichier session.php.

{
if (!$this->has('session.timer.start'))
{
$start = time();
$this->set('session.timer.start', $start);
$this->set('session.timer.last', $start);
$this->set('session.timer.now', $start);
}
$this->set('session.timer.last', $this->get('session.timer.now'));
$this->set('session.timer.now', time());
return true;
}
JSession::_start ( )
protected

Start a session.

Creates a session (or resumes the current one based on the state of the session)

Renvoie:
boolean true on success
Depuis:
11.1

Write and Close handlers are called after destructing objects since PHP 5.0.5. Thus destructors can use sessions but session handler can't use objects. So we are moving session closure before destructing objects.

Replace with session_register_shutdown() when dropping compatibility with PHP 5.3

Définition à la ligne 622 du fichier session.php.

{
// Start session if not started
if ($this->_state === 'restart')
{
session_regenerate_id(true);
}
else
{
$session_name = session_name();
// Get the JInputCookie object
$cookie = $this->_input->cookie;
if (is_null($cookie->get($session_name)))
{
$session_clean = $this->_input->get($session_name, false, 'string');
if ($session_clean)
{
session_id($session_clean);
$cookie->set($session_name, '', time() - 3600);
}
}
}
/**
* Write and Close handlers are called after destructing objects since PHP 5.0.5.
* Thus destructors can use sessions but session handler can't use objects.
* So we are moving session closure before destructing objects.
*
* Replace with session_register_shutdown() when dropping compatibility with PHP 5.3
*/
register_shutdown_function('session_write_close');
session_cache_limiter('none');
session_start();
return true;
}
JSession::_validate (   $restart = false)
protected

Do some checks for security reason

  • timeout check (expire)
  • ip-fixiation
  • browser-fixiation

If one check failed, session data has to be cleaned.

Paramètres:
boolean$restartReactivate session
Renvoie:
boolean True on success
Voir également:
http://shiflett.org/articles/the-truth-about-sessions
Depuis:
11.1

Définition à la ligne 946 du fichier session.php.

{
// Allow to restart a session
if ($restart)
{
$this->_state = 'active';
$this->set('session.client.address', null);
$this->set('session.client.forwarded', null);
$this->set('session.client.browser', null);
$this->set('session.token', null);
}
// Check if session has expired
if ($this->_expire)
{
$curTime = $this->get('session.timer.now', 0);
$maxTime = $this->get('session.timer.last', 0) + $this->_expire;
// Empty session variables
if ($maxTime < $curTime)
{
$this->_state = 'expired';
return false;
}
}
// Record proxy forwarded for in the session in case we need it later
if (isset($_SERVER['HTTP_X_FORWARDED_FOR']))
{
$this->set('session.client.forwarded', $_SERVER['HTTP_X_FORWARDED_FOR']);
}
// Check for client address
if (in_array('fix_adress', $this->_security) && isset($_SERVER['REMOTE_ADDR']))
{
$ip = $this->get('session.client.address');
if ($ip === null)
{
$this->set('session.client.address', $_SERVER['REMOTE_ADDR']);
}
elseif ($_SERVER['REMOTE_ADDR'] !== $ip)
{
$this->_state = 'error';
return false;
}
}
// Check for clients browser
if (in_array('fix_browser', $this->_security) && isset($_SERVER['HTTP_USER_AGENT']))
{
$browser = $this->get('session.client.browser');
if ($browser === null)
{
$this->set('session.client.browser', $_SERVER['HTTP_USER_AGENT']);
}
elseif ($_SERVER['HTTP_USER_AGENT'] !== $browser)
{
// @todo remove code: $this->_state = 'error';
// @todo remove code: return false;
}
}
return true;
}
static JSession::checkToken (   $method = 'post')
static

Checks for a form token in the request.

Use in conjunction with JHtml::_('form.token') or JSession::getFormToken.

Paramètres:
string$methodThe request method in which to look for the token key.
Renvoie:
boolean True if found and valid, false otherwise.
Depuis:
12.1

Définition à la ligne 316 du fichier session.php.

Références JRoute\_(), JText\_(), JFactory\getApplication(), et JFactory\getSession().

Référencé par JControllerForm\cancel(), JControllerAdmin\checkin(), JRequest\checkToken(), JControllerAdmin\delete(), JControllerAdmin\publish(), JControllerAdmin\reorder(), JControllerForm\save(), et JControllerAdmin\saveorder().

{
$token = self::getFormToken();
if (!$app->input->$method->get($token, '', 'alnum'))
{
$session = JFactory::getSession();
if ($session->isNew())
{
// Redirect to login screen.
$app->enqueueMessage(JText::_('JLIB_ENVIRONMENT_SESSION_EXPIRED'), 'warning');
$app->redirect(JRoute::_('index.php'));
}
else
{
return false;
}
}
else
{
return true;
}
}

+ Voici le graphe d'appel pour cette fonction :

+ Voici le graphe des appelants de cette fonction :

JSession::clear (   $name,
  $namespace = 'default' 
)

Unset data from the session store

Paramètres:
string$nameName of variable
string$namespaceNamespace to use, default to 'default'
Renvoie:
mixed The value from session or NULL if not set
Depuis:
11.1

Définition à la ligne 561 du fichier session.php.

{
// Add prefix to namespace to avoid collisions
$namespace = '__' . $namespace;
if ($this->_state !== 'active')
{
// @TODO :: generated error here
return null;
}
$value = null;
if (isset($_SESSION[$namespace][$name]))
{
$value = $_SESSION[$namespace][$name];
unset($_SESSION[$namespace][$name]);
}
return $value;
}
JSession::close ( )

Writes session data and ends session

Session data is usually stored after your script terminated without the need to call JSession::close(), but as session data is locked to prevent concurrent writes only one script may operate on a session at any time. When using framesets together with sessions you will experience the frames loading one by one due to this locking. You can reduce the time needed to load all the frames by ending the session as soon as all changes to session variables are done.

Renvoie:
void
Voir également:
session_write_close()
Depuis:
11.1

Définition à la ligne 787 du fichier session.php.

{
session_write_close();
}
JSession::destroy ( )

Frees all session variables and destroys all data registered to a session

This method resets the $_SESSION variable and destroys all of the data associated with the current session in its storage (file or DB). It forces new session to be started after this method is called. It does not unset the session cookie.

Renvoie:
boolean True on success
Voir également:
session_destroy()
session_unset()
Depuis:
11.1

Définition à la ligne 676 du fichier session.php.

Références JFactory\getConfig().

{
// Session was already destroyed
if ($this->_state === 'destroyed')
{
return true;
}
/*
* In order to kill the session altogether, such as to log the user out, the session id
* must also be unset. If a cookie is used to propagate the session id (default behavior),
* then the session cookie must be deleted.
*/
if (isset($_COOKIE[session_name()]))
{
$config = JFactory::getConfig();
$cookie_domain = $config->get('cookie_domain', '');
$cookie_path = $config->get('cookie_path', '/');
setcookie(session_name(), '', time() - 42000, $cookie_path, $cookie_domain);
}
session_unset();
session_destroy();
$this->_state = 'destroyed';
return true;
}

+ Voici le graphe d'appel pour cette fonction :

JSession::fork ( )

Create a new session and copy variables from the old one

Renvoie:
boolean $result true on success
Depuis:
11.1

Définition à la ligne 744 du fichier session.php.

{
if ($this->_state !== 'active')
{
// @TODO :: generated error here
return false;
}
// Keep session config
$cookie = session_get_cookie_params();
// Kill session
session_destroy();
// Re-register the session store after a session has been destroyed, to avoid PHP bug
$this->_store->register();
// Restore config
session_set_cookie_params($cookie['lifetime'], $cookie['path'], $cookie['domain'], $cookie['secure'], true);
// Restart session with new id
session_regenerate_id(true);
session_start();
return true;
}
JSession::get (   $name,
  $default = null,
  $namespace = 'default' 
)

Get data from the session store

Paramètres:
string$nameName of a variable
mixed$defaultDefault value of a variable if not set
string$namespaceNamespace to use, default to 'default'
Renvoie:
mixed Value of a variable
Depuis:
11.1

Définition à la ligne 472 du fichier session.php.

{
// Add prefix to namespace to avoid collisions
$namespace = '__' . $namespace;
if ($this->_state !== 'active' && $this->_state !== 'expired')
{
// @TODO :: generated error here
$error = null;
return $error;
}
if (isset($_SESSION[$namespace][$name]))
{
return $_SESSION[$namespace][$name];
}
return $default;
}
JSession::getExpire ( )

Get expiration time in minutes

Renvoie:
integer The session expiration time in minutes
Depuis:
11.1

Définition à la ligne 205 du fichier session.php.

{
}
static JSession::getFormToken (   $forceNew = false)
static

Method to determine a hash for anti-spoofing variable names

Paramètres:
boolean$forceNewIf true, force a new token to be created
Renvoie:
string Hashed var name
Depuis:
11.1

Définition à la ligne 275 du fichier session.php.

Références JFactory\getApplication(), JApplication\getHash(), JFactory\getSession(), et JFactory\getUser().

Référencé par JCache\getWorkarounds().

{
$user = JFactory::getUser();
$session = JFactory::getSession();
// TODO: Decouple from legacy JApplication class.
if (is_callable(array('JApplication', 'getHash')))
{
$hash = JApplication::getHash($user->get('id', 0) . $session->getToken($forceNew));
}
else
{
$hash = md5(JFactory::getApplication()->get('secret') . $user->get('id', 0) . $session->getToken($forceNew));
}
return $hash;
}

+ Voici le graphe d'appel pour cette fonction :

+ Voici le graphe des appelants de cette fonction :

JSession::getId ( )

Get session id

Renvoie:
string The session name
Depuis:
11.1

Définition à la ligne 365 du fichier session.php.

{
if ($this->_state === 'destroyed')
{
// @TODO : raise error
return null;
}
return session_id();
}
static JSession::getInstance (   $handler,
  $options 
)
static

Returns the global Session object, only creating it if it doesn't already exist.

Paramètres:
string$handlerThe type of session handler.
array$optionsAn array of configuration options.
Renvoie:
JSession The Session object.
Depuis:
11.1

Définition à la ligne 176 du fichier session.php.

Référencé par JFactory\createSession(), et JApplicationWeb\loadSession().

{
if (!is_object(self::$instance))
{
self::$instance = new JSession($handler, $options);
}
}

+ Voici le graphe des appelants de cette fonction :

JSession::getIterator ( )

Retrieve an external iterator.

Renvoie:
ArrayIterator Return an ArrayIterator of $_SESSION.
Depuis:
12.2

Définition à la ligne 300 du fichier session.php.

{
return new ArrayIterator($_SESSION);
}
JSession::getName ( )

Get session name

Renvoie:
string The session name
Depuis:
11.1

Définition à la ligne 348 du fichier session.php.

{
if ($this->_state === 'destroyed')
{
// @TODO : raise error
return null;
}
return session_name();
}
JSession::getState ( )

Get current state of session

Renvoie:
string The session state
Depuis:
11.1

Définition à la ligne 193 du fichier session.php.

{
return $this->_state;
}
static JSession::getStores ( )
static

Get the session handlers

Renvoie:
array An array of available session handlers
Depuis:
11.1

Définition à la ligne 382 du fichier session.php.

Référencé par JFormFieldSessionHandler\getOptions().

{
$connectors = array();
// Get an iterator and loop trough the driver classes.
$iterator = new DirectoryIterator(__DIR__ . '/storage');
foreach ($iterator as $file)
{
$fileName = $file->getFilename();
// Only load for php files.
// Note: DirectoryIterator::getExtension only available PHP >= 5.3.6
if (!$file->isFile() || substr($fileName, strrpos($fileName, '.') + 1) != 'php')
{
continue;
}
// Derive the class name from the type.
$class = str_ireplace('.php', '', 'JSessionStorage' . ucfirst(trim($fileName)));
// If the class doesn't exist we have nothing left to do but look at the next type. We did our best.
if (!class_exists($class))
{
continue;
}
// Sweet! Our class exists, so now we just need to know if it passes its test method.
if ($class::isSupported())
{
// Connector names should not have file extensions.
$connectors[] = str_ireplace('.php', '', $fileName);
}
}
return $connectors;
}

+ Voici le graphe des appelants de cette fonction :

JSession::getToken (   $forceNew = false)

Get a session token, if a token isn't set yet one will be generated.

Tokens are used to secure forms from spamming attacks. Once a token has been generated the system will check the post request to see if it is present, if not it will invalidate the session.

Paramètres:
boolean$forceNewIf true, force a new token to be created
Renvoie:
string The session token
Depuis:
11.1

Définition à la ligne 223 du fichier session.php.

{
$token = $this->get('session.token');
// Create a token
if ($token === null || $forceNew)
{
$token = $this->_createToken(12);
$this->set('session.token', $token);
}
return $token;
}
JSession::has (   $name,
  $namespace = 'default' 
)

Check whether data exists in the session store

Paramètres:
string$nameName of variable
string$namespaceNamespace to use, default to 'default'
Renvoie:
boolean True if the variable exists
Depuis:
11.1

Définition à la ligne 537 du fichier session.php.

{
// Add prefix to namespace to avoid collisions.
$namespace = '__' . $namespace;
if ($this->_state !== 'active')
{
// @TODO :: generated error here
return null;
}
return isset($_SESSION[$namespace][$name]);
}
JSession::hasToken (   $tCheck,
  $forceExpire = true 
)

Method to determine if a token exists in the session. If not the session will be set to expired

Paramètres:
string$tCheckHashed token to be verified
boolean$forceExpireIf true, expires the session
Renvoie:
boolean
Depuis:
11.1

Définition à la ligne 248 du fichier session.php.

{
// Check if a token exists in the session
$tStored = $this->get('session.token');
// Check token
if (($tStored !== $tCheck))
{
if ($forceExpire)
{
$this->_state = 'expired';
}
return false;
}
return true;
}
JSession::initialise ( JInput  $input,
JEventDispatcher  $dispatcher = null 
)

Check whether this session is currently created

Paramètres:
JInput$inputJInput object for the session to use.
JEventDispatcher$dispatcherDispatcher object for the session to use.
Renvoie:
void.
Depuis:
12.2

Définition à la ligne 455 du fichier session.php.

{
$this->_input = $input;
$this->_dispatcher = $dispatcher;
}
JSession::isActive ( )

Shorthand to check if the session is active

Renvoie:
boolean
Depuis:
12.2

Définition à la ligne 427 du fichier session.php.

{
return (bool) ($this->_state == 'active');
}
JSession::isNew ( )

Check whether this session is currently created

Renvoie:
boolean True on success.
Depuis:
11.1

Définition à la ligne 439 du fichier session.php.

{
$counter = $this->get('session.counter');
return (bool) ($counter === 1);
}
JSession::restart ( )

Restart an expired or locked session.

Renvoie:
boolean True on success
Voir également:
JSession::destroy()
Depuis:
11.1

Définition à la ligne 712 du fichier session.php.

{
$this->destroy();
if ($this->_state !== 'destroyed')
{
// @TODO :: generated error here
return false;
}
// Re-register the session handler after a session has been destroyed, to avoid PHP bug
$this->_store->register();
$this->_state = 'restart';
// Regenerate session id
session_regenerate_id(true);
$this->_start();
$this->_state = 'active';
$this->_validate();
$this->_setCounter();
return true;
}
JSession::set (   $name,
  $value = null,
  $namespace = 'default' 
)

Set data into the session store.

Paramètres:
string$nameName of a variable.
mixed$valueValue of a variable.
string$namespaceNamespace to use, default to 'default'.
Renvoie:
mixed Old value of a variable.
Depuis:
11.1

Définition à la ligne 502 du fichier session.php.

{
// Add prefix to namespace to avoid collisions
$namespace = '__' . $namespace;
if ($this->_state !== 'active')
{
// @TODO :: generated error here
return null;
}
$old = isset($_SESSION[$namespace][$name]) ? $_SESSION[$namespace][$name] : null;
if (null === $value)
{
unset($_SESSION[$namespace][$name]);
}
else
{
$_SESSION[$namespace][$name] = $value;
}
return $old;
}
JSession::start ( )

Start a session.

Renvoie:
void
Depuis:
12.2

Définition à la ligne 589 du fichier session.php.

{
if ($this->_state === 'active')
{
return;
}
$this->_start();
$this->_state = 'active';
// Initialise the session
$this->_setCounter();
$this->_setTimers();
// Perform security checks
$this->_validate();
if ($this->_dispatcher instanceof JEventDispatcher)
{
$this->_dispatcher->trigger('onAfterSessionStart');
}
}

Documentation des données membres

JSession::$_dispatcher = null
private

Définition à la ligne 104 du fichier session.php.

JSession::$_expire = 15
protected

Définition à la ligne 42 du fichier session.php.

JSession::$_force_ssl = false
protected

Définition à la ligne 72 du fichier session.php.

JSession::$_input = null
private

Définition à la ligne 96 du fichier session.php.

JSession::$_security = array('fix_browser')
protected

Définition à la ligne 63 du fichier session.php.

JSession::$_state = 'inactive'
protected

Définition à la ligne 34 du fichier session.php.

JSession::$_store = null
protected

Définition à la ligne 50 du fichier session.php.

JSession::$instance
staticprotected

Définition à la ligne 80 du fichier session.php.

JSession::$storeName
protected

Définition à la ligne 88 du fichier session.php.


La documentation de cette classe a été générée à partir du fichier suivant :