[SPIP] ~2.1.12 -->2.1.25
[velocampus/web/www.git] / www / ecrire / inc / session.php
index 568cce9..03c29cb 100644 (file)
@@ -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);
 }