Documentation du code de SPIP et de ses plugins

SPIP

Session

Table of Contents

Constants

_NB_SESSIONS_MAX  = 100
_SESSION_REJOUER  = true

Functions

inc_session_dist()  : bool|null|void
3 actions sur les sessions, selon le type de l'argument:
supprimer_sessions()  : mixed
Supprimer toutes les vieilles sessions d'un auteur
ajouter_session()  : bool|string
Ajoute une session pour l'auteur décrit par un tableau issu d'un SELECT-SQL
definir_duree_cookie_session()  : int
Calcule le temps de validité en seconde du cookie de session
lire_cookie_session()  : string|null
Lire le cookie de session et le valider de façon centralisée
effacer_cookie_session()  : void
Annuler le cookie de session
set_cookie_session()  : string|null
Prolonger / Changer la valeur du cookie de session
verifier_session()  : bool|int|null
Vérifie si le cookie spip_session indique une session valide
session_get()  : mixed|null
Lire une valeur dans la session SPIP
session_set()  : void|array<string|int, mixed>
Ajouter une donnée dans la session SPIP
terminer_actualiser_sessions()  : mixed
En fin de hit, synchroniser toutes les sessions
actualiser_sessions()  : mixed
Mettre à jour les sessions existantes pour un auteur
lister_sessions_auteur()  : array<string|int, mixed>
lister les sessions et en verifier le nombre maxi en supprimant les plus anciennes si besoin https://core.spip.net/issues/3807
preparer_ecriture_session()  : array<string|int, mixed>
Préparer le tableau de session avant écriture
ecrire_fichier_session()  : bool
Ecrire le fichier d'une session
chemin_fichier_session()  : string
Calculer le chemin vers le fichier de session
fichier_session()  : string
Calculer le nom du fichier session
rejouer_session()  : string
Code à insérer par `inc/presentation` pour rejouer la session
hash_env()  : string
On verifie l'IP et le nom du navigateur
spip_php_session_start()  : bool
Démarre une session PHP si ce n'est pas déjà fait.
is_php_session_started()  : bool
Indique si une sesssion PHP est active

Constants

Functions

inc_session_dist()

3 actions sur les sessions, selon le type de l'argument:

inc_session_dist([int|array<string|int, mixed>|bool $auteur = false ]) : bool|null|void
  • numerique: efface toutes les sessions de l'auteur (retour quelconque)
  • tableau: cree une session pour l'auteur decrit et retourne l'identifiant
  • bool: predicat de validite de la session indiquee par le cookie
Parameters
$auteur : int|array<string|int, mixed>|bool = false
Tags
uses
supprimer_sessions()
uses
ajouter_session()
uses
verifier_session()
Return values
bool|null|void

supprimer_sessions()

Supprimer toutes les vieilles sessions d'un auteur

supprimer_sessions(int $id_auteur[, bool $toutes = true ][, bool $actives = true ]) : mixed

Cette fonction efface toutes les sessions appartenant a l'auteur On en profite pour effacer toutes les sessions creees il y a plus de 4*RENOUVELLE_ALEA Tenir compte de l'ancien format ou les noms commencaient par "session" et du meme coup des repertoires plats

Attention : id_auteur peut etre negatif (cas des auteurs temporaires pendant le dump)

Parameters
$id_auteur : int

Identifiant d'auteur dont on veut supprimer les sessions

$toutes : bool = true

Supprimer aussi les vieilles sessions des autres auteurs ?

$actives : bool = true

false pour ne pas supprimer les sessions valides de $id_auteur. false revient donc a uniquement supprimer les vieilles sessions !

Tags
uses
verifier_session()
uses
chemin_fichier_session()
uses
spip_session()
used-by
inc_session_dist()

ajouter_session()

Ajoute une session pour l'auteur décrit par un tableau issu d'un SELECT-SQL

ajouter_session(array<string|int, mixed> $auteur) : bool|string
Parameters
$auteur : array<string|int, mixed>

Description de la session de l'auteur. Peut contenir (par exemple) les clés : id_auteur, nom, login, email, statut, lang, ...

Tags
uses
spip_php_session_start()

Lorsque session anonyme

uses
hash_env()
uses
preparer_ecriture_session()
uses
chemin_fichier_session()
uses
ecrire_fichier_session()
used-by
inc_session_dist()
used-by
verifier_session()
used-by
session_set()
used-by
actualiser_sessions()
Return values
bool|string

Calcule le temps de validité en seconde du cookie de session

definir_duree_cookie_session(array<string|int, mixed> $auteur) : int

Applique un coefficient multiplicateur à la durée de renouvellement de l'alea (noté ensuite dR, valant 12h par défaut) pour déterminer la durée du cookie.

  • 2 * dR, par défaut
  • 20 * dR si le visiteur a indiqué vouloir rester connecté quelques jours sur le formulaire de login (la clé cookie vaut alors oui)
  • c * dR, un coeficient défini manuellement si la clé cookie est numérique
Parameters
$auteur : array<string|int, mixed>

Description de l'auteur

Return values
int

Durée en secondes

Lire le cookie de session et le valider de façon centralisée

lire_cookie_session([bool $accepter_test = false ]) : string|null
Parameters
$accepter_test : bool = false
Return values
string|null

Annuler le cookie de session

effacer_cookie_session() : void

Prolonger / Changer la valeur du cookie de session

set_cookie_session([string|null $valeur_cookie = null ][, int $expires = 0 ]) : string|null
Parameters
$valeur_cookie : string|null = null

nouveau cookie (string), prolonger le cookie existant (null)

$expires : int = 0

timestamp d'expiration

Return values
string|null

verifier_session()

Vérifie si le cookie spip_session indique une session valide

verifier_session([bool $change = false ]) : bool|int|null

Si oui, la decrit dans le tableau $visiteur_session et retourne id_auteur La rejoue si IP change puis accepte le changement si $change=true

Retourne false en cas d'echec, l'id_auteur de la session si defini, null sinon

Parameters
$change : bool = false
Tags
uses
spip_php_session_start()

Si session anonyme

uses
chemin_fichier_session()
uses
ajouter_session()
uses
hash_env()
used-by
inc_session_dist()
used-by
supprimer_sessions()
Return values
bool|int|null

session_get()

Lire une valeur dans la session SPIP

session_get(string $nom) : mixed|null
Parameters
$nom : string

Clé dont on souhaite la valeur

Tags
example

$login = session_get('login');

Return values
mixed|null

Valeur, si trouvée, null sinon.

session_set()

Ajouter une donnée dans la session SPIP

session_set(string $nom[, mixed $val = null ]) : void|array<string|int, mixed>
Parameters
$nom : string
$val : mixed = null
Tags
uses
ajouter_session()
uses
terminer_actualiser_sessions()

Ajoute la fonction en fin de hit.

Return values
void|array<string|int, mixed>

actualiser_sessions()

Mettre à jour les sessions existantes pour un auteur

actualiser_sessions(array<string|int, mixed> $auteur[, array<string|int, mixed> $supprimer_cles = [] ]) : mixed

Quand on modifie une fiche auteur on appelle cette fonction qui va mettre à jour les fichiers de session de l'auteur en question. (auteurs identifiés seulement)

Ne concerne que les sessions des auteurs loges (id_auteur connu)

Parameters
$auteur : array<string|int, mixed>
$supprimer_cles : array<string|int, mixed> = []

Liste des clés à supprimer des tableaux de sessions

Tags
uses
ajouter_session()
uses
chemin_fichier_session()
uses
preg_files()
uses
preparer_ecriture_session()
uses
ecrire_fichier_session()
used-by
terminer_actualiser_sessions()

lister_sessions_auteur()

lister les sessions et en verifier le nombre maxi en supprimant les plus anciennes si besoin https://core.spip.net/issues/3807

lister_sessions_auteur(int $id_auteur[, int $nb_max = null ]) : array<string|int, mixed>
Parameters
$id_auteur : int
$nb_max : int = null
Return values
array<string|int, mixed>

preparer_ecriture_session()

Préparer le tableau de session avant écriture

preparer_ecriture_session(array<string|int, mixed> $auteur) : array<string|int, mixed>

Nettoyage de quelques variables sensibles, et appel d'un pipeline

Parameters
$auteur : array<string|int, mixed>
Tags
pipeline

preparer_fichier_session

used-by
ajouter_session()
used-by
actualiser_sessions()
Return values
array<string|int, mixed>

ecrire_fichier_session()

Ecrire le fichier d'une session

ecrire_fichier_session(string $fichier, array<string|int, mixed> $auteur) : bool
Parameters
$fichier : string
$auteur : array<string|int, mixed>
Tags
used-by
ajouter_session()
used-by
actualiser_sessions()
Return values
bool

fichier_session()

Calculer le nom du fichier session

fichier_session(string $alea[, bool $tantpis = false ]) : string
Parameters
$alea : string
$tantpis : bool = false
Tags
deprecated
5.0

Use chemin_fichier_session() with lire_cookie_session() as 2nd parameter

Return values
string

rejouer_session()

Code à insérer par `inc/presentation` pour rejouer la session

rejouer_session() : string
Tags
note

Pourquoi insère-t-on le src par js et non directement en statique dans le HTML ? Historiquement, inséré par une balise <script> en r424 puis modifié par <img> statique + js en r427

see
action_cookie_dist()

qui sera appelé

Return values
string

        
On this page

Search results