X-Git-Url: http://git.cyclocoop.org/?p=velocampus%2Fweb%2Fwww.git;a=blobdiff_plain;f=www%2Fecrire%2Finc%2Fsession.php;h=03c29cb8fe2aed2251d8bca4577454ae775bcddd;hp=568cce9c1882362f58bfdf991976156240dcc9a3;hb=e99f0878011913365e49b30d90e496c24c301393;hpb=80b4d3e85f78d402ed2e73f8f5d1bf4c19962eed diff --git a/www/ecrire/inc/session.php b/www/ecrire/inc/session.php index 568cce9..03c29cb 100644 --- a/www/ecrire/inc/session.php +++ b/www/ecrire/inc/session.php @@ -3,7 +3,7 @@ /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * - * Copyright (c) 2001-2011 * + * Copyright (c) 2001-2014 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * @@ -103,6 +103,10 @@ function ajouter_session($auteur) { time() + $duree ); spip_log("ajoute session $fichier_session cookie $duree"); + + // purger au passage les vieux fichiers de session + supprimer_sessions(-1); + return $_COOKIE['spip_session']; } } @@ -120,7 +124,7 @@ function session_set($nom, $val=null) { // Lire une valeur dans la session SPIP // http://doc.spip.org/@session_get function session_get($nom) { - return $GLOBALS['visiteur_session'][$nom]; + return isset($GLOBALS['visiteur_session'][$nom]) ? $GLOBALS['visiteur_session'][$nom] : null; } // Quand on modifie une fiche auteur on appelle cette fonction qui va @@ -147,7 +151,7 @@ function actualiser_sessions($auteur) { $GLOBALS['visiteur_session'] = $sauve; // si c'est le meme, rafraichir les valeurs - if ($auteur['id_auteur'] == $sauve['id_auteur']) + if (isset($sauve['id_auteur']) and $auteur['id_auteur'] == $sauve['id_auteur']) verifier_session(); } @@ -196,8 +200,8 @@ function supprimer_sessions($id_auteur) { if (!preg_match(",^\D*(\d+)_\w{32}\.php[3]?$,", $e, $r)) continue; $f = _DIR_SESSIONS . $e; - if (($id_auteur AND ($r[1] == $id_auteur)) - OR ($t > filemtime($f))) { + if (file_exists($f) AND (($id_auteur AND ($r[1] == $id_auteur)) + OR ($t > filemtime($f)))) { spip_unlink($f); $i++; } @@ -207,7 +211,7 @@ function supprimer_sessions($id_auteur) { verifier_session(); spip_unlink(fichier_session('alea_ephemere', true)); } - spip_log("destruction des $i fichiers de session de $id_auteur et 0"); + if ($i) spip_log("destruction des $i fichiers de session de $id_auteur et 0"); // forcer le recalcul de la session courante spip_session(true); }