diff --git a/ecrire/inc/session.php b/ecrire/inc/session.php index e9479d0ce7f41852e71c3271e19a6831422d4d99..3440f6aa95b05f5dc2a7e3f77d5cda845c489aef 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