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éfaut
- 20 * dRsi le visiteur a indiqué vouloir rester connecté quelques jours sur le formulaire de login (la clé- cookievaut alors- oui)
- c * dR, un coeficient défini manuellement si la clé- cookieest 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