From 928df97335575f3df3681b58d6216b986a96752e Mon Sep 17 00:00:00 2001 From: Matthieu Marcillaud <marcimat@rezo.net> Date: Wed, 9 Nov 2016 12:21:35 +0000 Subject: [PATCH] =?UTF-8?q?Report=20de=20r23248=20:=20S=C3=A9parer=20dans?= =?UTF-8?q?=20une=20fonction=20le=20calcul=20de=20la=20dur=C3=A9e=20du=20c?= =?UTF-8?q?ookie=20de=20session,=20mettre=20un=20phpdoc=20qui=20explique,?= =?UTF-8?q?=20et=20reformater=20pour=20plus=20de=20clart=C3=A9.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ecrire/inc/session.php | 33 ++++++++++++++++++++++++++++----- 1 file changed, 28 insertions(+), 5 deletions(-) diff --git a/ecrire/inc/session.php b/ecrire/inc/session.php index e9479d0ce7..3440f6aa95 100644 --- a/ecrire/inc/session.php +++ b/ecrire/inc/session.php @@ -200,11 +200,7 @@ function ajouter_session($auteur) { // poser le cookie de session SPIP include_spip('inc/cookie'); - $duree = _RENOUVELLE_ALEA * - (!isset($auteur['cookie']) - ? 2 : (is_numeric($auteur['cookie']) - ? $auteur['cookie'] : 20)); - + $duree = definir_duree_cookie_session($auteur); spip_setcookie( 'spip_session', $_COOKIE['spip_session'], @@ -218,6 +214,33 @@ function ajouter_session($auteur) { return $_COOKIE['spip_session']; } +/** + * Calcule le temps de validité en seconde du cookie de session + * + * 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 + * + * @param array $auteur + * Description de l'auteur + * @return int + * Durée en secondes +**/ +function definir_duree_cookie_session($auteur) { + $coef = 2; + if (isset($auteur['cookie'])) { + if (is_numeric($auteur['cookie'])) { + $coef = $auteur['cookie']; + } else { + $coef = 20; + } + } + return (int)(_RENOUVELLE_ALEA * $coef); +} /** * Vérifie si le cookie spip_session indique une session valide -- GitLab