session.php
SPIP, Système de publication pour l'internet
Copyright © avec tendresse depuis 2001 Arnaud Martin, Antoine Pitrou, Philippe Rivière, Emmanuel Saint-James
Ce programme est un logiciel libre distribué sous licence GNU/GPL.
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
_NB_SESSIONS_MAX
public
mixed
_NB_SESSIONS_MAX
= 100
_SESSION_REJOUER
public
mixed
_SESSION_REJOUER
= true
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
Return values
bool|null|voidsupprimer_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
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
Return values
bool|stringdefinir_duree_cookie_session()
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éfaut20 * dR
si le visiteur a indiqué vouloir rester connecté quelques jours sur le formulaire de login (la clécookie
vaut alorsoui
)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_cookie_session()
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|nulleffacer_cookie_session()
Annuler le cookie de session
effacer_cookie_session() : void
set_cookie_session()
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|nullverifier_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
Return values
bool|int|nullsession_get()
Lire une valeur dans la session SPIP
session_get(string $nom) : mixed|null
Parameters
- $nom : string
-
Clé dont on souhaite la valeur
Tags
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
Return values
void|array<string|int, mixed>terminer_actualiser_sessions()
En fin de hit, synchroniser toutes les sessions
terminer_actualiser_sessions() : mixed
Tags
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
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
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
Return values
boolchemin_fichier_session()
Calculer le chemin vers le fichier de session
chemin_fichier_session(string $alea, string $cookie_session[, bool $tantpis = false ]) : string
Parameters
- $alea : string
- $cookie_session : string
- $tantpis : bool = false
Tags
Return values
stringfichier_session()
Calculer le nom du fichier session
Use chemin_fichier_session()
with lire_cookie_session()
as 2nd parameter
fichier_session(string $alea[, bool $tantpis = false ]) : string
Parameters
- $alea : string
- $tantpis : bool = false
Return values
stringrejouer_session()
Code à insérer par `inc/presentation` pour rejouer la session
rejouer_session() : string
Tags
Return values
stringhash_env()
On verifie l'IP et le nom du navigateur
hash_env() : string
Tags
Return values
stringspip_php_session_start()
Démarre une session PHP si ce n'est pas déjà fait.
spip_php_session_start() : bool
Tags
Return values
bool —True si une session PHP est ouverte.
is_php_session_started()
Indique si une sesssion PHP est active
is_php_session_started() : bool
Tags
Return values
bool —true si une session PHP est active