Skip to content
Extraits de code Groupes Projets
Valider f77e4699 rédigé par b_b's avatar b_b Validation de Gitea
Parcourir les fichiers

report adapté de a0c24ecb

Ref #4312
parent 144165d6
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -77,16 +77,26 @@ function inc_session_dist($auteur = false) { ...@@ -77,16 +77,26 @@ function inc_session_dist($auteur = false) {
*/ */
function supprimer_sessions($id_auteur, $toutes = true, $actives = true) { function supprimer_sessions($id_auteur, $toutes = true, $actives = true) {
$nb_files = 0;
$nb_max_files = (defined('_MAX_NB_SESSIONS_OUVERTES') ? _MAX_NB_SESSIONS_OUVERTES : 1000);
spip_log("supprimer sessions auteur $id_auteur", "session"); spip_log("supprimer sessions auteur $id_auteur", "session");
if ($toutes or $id_auteur !== $GLOBALS['visiteur_session']['id_auteur']) { if ($toutes or $id_auteur !== $GLOBALS['visiteur_session']['id_auteur']) {
if ($dir = opendir(_DIR_SESSIONS)) { if ($dir = opendir(_DIR_SESSIONS)) {
$t = $_SERVER['REQUEST_TIME'] - (4*_RENOUVELLE_ALEA); // 48h par defaut
$t_short = $_SERVER['REQUEST_TIME'] - max(_RENOUVELLE_ALEA/4,3*3600); // 3h par defaut
$t = time() - (4 * _RENOUVELLE_ALEA); $t = time() - (4 * _RENOUVELLE_ALEA);
while (($f = readdir($dir)) !== false) { while (($f = readdir($dir)) !== false) {
$nb_files++;
if (preg_match(",^[^\d-]*(-?\d+)_\w{32}\.php[3]?$,", $f, $regs)) { if (preg_match(",^[^\d-]*(-?\d+)_\w{32}\.php[3]?$,", $f, $regs)) {
$f = _DIR_SESSIONS . $f; $f = _DIR_SESSIONS . $f;
if (($actives and $regs[1] == $id_auteur) or ($t > filemtime($f))) { if (($actives and $regs[1] == $id_auteur) or ($t > filemtime($f))) {
spip_unlink($f); spip_unlink($f);
} }
// si il y a trop de sessions ouvertes, on purge les sessions anonymes de plus de 3H
// cf http://core.spip.org/issues/3276
elseif ($nb_files>$nb_max_files and !intval($regs[1]) and ($t_short > filemtime($f))) {
spip_unlink($f);
}
} }
} }
} }
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter