diff --git a/ecrire/inc_auth.php3 b/ecrire/inc_auth.php3
index a9b7e8d644b6133c550025299d00f644571e00c0..e8b203b1180fab6bffe14190acfab488c5e692c3 100644
--- a/ecrire/inc_auth.php3
+++ b/ecrire/inc_auth.php3
@@ -90,7 +90,11 @@ function auth() {
 	if ($SUPPRIME_LA_SECURITE_POUR_JOUER_AUX_COOKIES)
 	if ($cookie = $HTTP_COOKIE_VARS[spip_session]) {
 		include_local ("inc_session.php3");
-		$session_login = verifie_cookie_session ($cookie);
+		if ($visiteur = verifie_cookie_session ($cookie)) {
+			if ($visiteur->statut == '0minirezo' OR $visiteur->statut == '1comite') {
+				$session_login = $visiteur->login;
+			}
+		}
 	}
 	if (! $session_login AND ($HTTP_COOKIE_VARS[cookie_login] == 'experimental')) {
 		@header ("Location: login.php3");
diff --git a/ecrire/inc_session.php3 b/ecrire/inc_session.php3
index 74cd2b22b5d2061be390b22658d0144971104309..167a3511d0c5f10cbac7594a6e8725a31d54170d 100644
--- a/ecrire/inc_session.php3
+++ b/ecrire/inc_session.php3
@@ -7,11 +7,17 @@
 	 *
 	 */
 
+	//
+	// Ce fichier ne sera execute qu'une fois
+	if (defined("_ECRIRE_INC_SESSION")) return;
+	define("_ECRIRE_INC_SESSION", "1");
+
 	// cree le cookie correspondant a l'auteur
 	// attention aux trous de securite ;)
 	function cree_cookie_session ($id_auteur) {
 		if ($id_auteur > 0) {
 			$query = "SELECT * FROM spip_auteurs WHERE id_auteur=$id_auteur";
+			include_ecrire ("inc_connect.php3");
 			$result = spip_query ($query);
 			if ($auteur = mysql_fetch_object ($result)) {
 				$session = md5($id_auteur . $auteur->pass); // ici creer le numero de session
@@ -30,11 +36,15 @@
 	function verifie_cookie_session ($cookie) {
 		if (list(,$id_auteur,$email,$nom,$session) = decode_cookie_session ($cookie)) {
 			if ($id_auteur > 0) {
+				include_ecrire ("inc_connect.php3");
 				$query = "SELECT * FROM spip_auteurs WHERE id_auteur=$id_auteur";
 				$result = spip_query ($query);
 				if ($auteur = mysql_fetch_object ($result)) {
-					if ($session == md5($id_auteur . $auteur->pass))  // ici verifier le num de session dans la base
-						return $auteur->login;
+					if ($session == md5($id_auteur . $auteur->pass)) { // ici verifier le num de session dans la base
+						$auteur->pass = '';		// securite
+						$auteur->htpass = '';
+						return $auteur;
+					}
 				}
 			}
 		}
diff --git a/inc-cache.php3 b/inc-cache.php3
index 58259350063ba6fd17546f94d16146c584a2c423..92354eb3da3f7f38f6b9e58f4fec6d172e8d000e 100644
--- a/inc-cache.php3
+++ b/inc-cache.php3
@@ -10,12 +10,16 @@ define("_INC_CACHE", "1");
 // Inclure un fichier cache
 //
 
-function include_cache($chemin_cache) {
+/* mauvaise idee on perd les globales... a moins qu'il faille faire
+   un include () normal pour les squelettes normaux, et un include_cache()
+   pour les squelettes inclus.... ??? */
+
+/* function include_cache($chemin_cache) {
 	include_local($chemin_cache);
 	if ($GLOBALS['flag_apc']) {
 		apc_rm($chemin_cache);
 	}
-}
+} */
 
 //
 // Calcul du nom du fichier cache
diff --git a/inc-public.php3 b/inc-public.php3
index 573dc767ad0e5f881dc17a131c79f01022381f1a..7899430e5bee6b83da7ee6fdb3daa5d83965bc0f 100644
--- a/inc-public.php3
+++ b/inc-public.php3
@@ -23,7 +23,10 @@ if (defined("_INC_PUBLIC")) {
 		}
 	}
 
-	include_cache($chemin_cache);
+	include ($chemin_cache);
+	if ($GLOBALS['flag_apc']) {
+		apc_rm($chemin_cache);
+	}
 
 	// ATTENTION : ne marchera pas sous PHP3
 	return;
@@ -36,6 +39,16 @@ $dir_ecrire = 'ecrire/';
 include ("ecrire/inc_version.php3");
 include_local ("inc-cache.php3");
 
+
+//
+// Presence du cookie de visiteur : valider ce cookie et extraire les donnees
+//
+if ($cookie = $HTTP_COOKIE_VARS[spip_session]) {
+	include_ecrire ("inc_session.php3");
+	$visiteur_authentifie = verifie_cookie_session ($cookie);
+} else
+	$visiteur_authentifie = false;
+
 //
 // Ajouter un forum
 //
@@ -132,7 +145,10 @@ if ($var_recherche AND $flag_ob AND $flag_preg_replace AND !$flag_preserver AND
 
 if (file_exists($chemin_cache)) {
 	if ($lastmodified) @Header ("Last-Modified: ".gmdate("D, d M Y H:i:s T", $lastmodified));
-	include_cache($chemin_cache);
+	include ($chemin_cache);
+	if ($GLOBALS['flag_apc']) {
+		apc_rm($chemin_cache);
+	}
 }