diff --git a/ecrire/inc_auth.php3 b/ecrire/inc_auth.php3
index 99330173e922821e127c288431cf720ed191eaf5..1b57a1a3218b52029d7677bc343234262e459db9 100644
--- a/ecrire/inc_auth.php3
+++ b/ecrire/inc_auth.php3
@@ -127,7 +127,8 @@ function auth() {
 
 	// Si pas authentifie, demander login / mdp
 	if (!$auth_login) {
-		@header("Location: ./login.php3");
+//		@header("Location: ./login.php3");
+		include('login.php3');
 		exit;
 	}
 
diff --git a/ecrire/inc_presentation.php3 b/ecrire/inc_presentation.php3
index 8b385bcceec21858666703ccc9da2e97c76c8634..42aace566400f6b30a90205e729f65b4d298b3f3 100644
--- a/ecrire/inc_presentation.php3
+++ b/ecrire/inc_presentation.php3
@@ -1690,6 +1690,20 @@ function debut_droite() {
 	<td width=500 valign="top" rowspan=2>
 	<font face="Georgia,Garamond,Times,serif" size=3>
 	<?php
+
+	// proposer un zap_session le cas echeant lors d'un login reussi
+	if ($GLOBALS['spip_session'] && $GLOBALS['zap']=='oui' && zap_sessions($GLOBALS['auteur_session']['login'], false)) {
+		debut_cadre_enfonce();
+		echo propre('<img src="img_pack/warning.gif" align="left" hspace="5" vspace="5"> Attention: une autre connexion
+			&agrave; votre nom est en cours. Probablement est-ce parce que vous ne vous
+			&ecirc;tes pas d&eacute;connect&eacute; apr&egrave;s votre dernier passage,
+			ou parce que vous vous connectez simultan&eacute;ment avec deux navigateurs.
+			Si tel est le cas, cela ne pr&ecirc;te pas &agrave; cons&eacute;quence.
+
+			En cas de doute, toutefois, [cliquez sur ce texte pour supprimer
+			l\'autre session->../spip_cookie.php3?zap_session=oui&redirect=./ecrire/].');
+		fin_cadre_enfonce();
+	}
 }
 
 
diff --git a/ecrire/inc_session.php3 b/ecrire/inc_session.php3
index e76b9df0cf23be6dc6580ae51ecb16aa631242c0..980a86f72f861858b186bf55ce5b59d3df6adc66 100644
--- a/ecrire/inc_session.php3
+++ b/ecrire/inc_session.php3
@@ -159,9 +159,14 @@ function zap_sessions ($login, $zap) {
 	} else {
 		$dirname = "ecrire/data/";
 	}
+
+	// ne pas se zapper soi-meme
+	if ($s = $GLOBALS['spip_session'])
+		$fichier_session = fichier_session($s, lire_meta('alea_ephemere'));
+
 	$dir = opendir($dirname);
 	while(($item = readdir($dir)) != ''){
-		if (ereg("^session_[a-z0-9]+\.php3$", $item)) {
+		if (ereg("^session_([a-z0-9]+)\.php3$", $item, $regs) AND ($fichier_session != $item)) {
 			$session = file("$dirname$item");
 			if (ereg("GLOBALS\['auteur_session'\]\['login'\] = '$login'", $session[3])) {
 				if ($zap) {
diff --git a/ecrire/login.php3 b/ecrire/login.php3
index dff370b76c02bdc2532a5cc22c075738434c3a79..80ef458ab3d6785219d7e7bafe6da099f7c49220 100644
--- a/ecrire/login.php3
+++ b/ecrire/login.php3
@@ -25,7 +25,7 @@ if ($erreur=='pass') $erreur = "Erreur de mot de passe.";
 
 // Le login est memorise dans le cookie d'admin eventuel
 if (!$login)
-	if (ereg("^@(.*)$", $spip_admin, $regs))
+	if (ereg("^@(.*)$", $HTTP_COOKIE_VARS['spip_admin'], $regs))
 		$login = $regs[1];
 
 // quels sont les aleas a passer ?
@@ -78,7 +78,7 @@ echo "<p>&nbsp;<p>";
 
 if ($login) {
 	// affiche formulaire de login en incluant le javascript MD5
-	$redirect = './ecrire/index.php3?essai_cookie=oui';
+	$redirect = './ecrire/index.php3?essai_cookie=oui&zap=oui';
 	$redirect_echec = './ecrire/login.php3';
 	$dir = "../";
 	echo "<script type=\"text/javascript\" src=\"md5.js\"></script>";
@@ -95,7 +95,7 @@ if ($login) {
 	} else if ($row['statut'] == '1comite') {
 		$icone = "redacteurs-24.gif";
 	}
-	debut_cadre_relief($icone);
+	debut_cadre_enfonce($icone);
 	if ($erreur) echo "<font color=red><b>$erreur</b></font><p>";
 
 	if (file_exists("../IMG/auton$id_auteur.gif")) $logo = "../IMG/auton$id_auteur.gif";
@@ -132,61 +132,9 @@ if ($login) {
 	echo "</tr></table>";
 	echo "<div align='right'><input type='submit' class='fondl' name='submit' value='Valider'></div>\n";
 	//echo "</div>\n";
-	fin_cadre_relief();
+	fin_cadre_enfonce();
 	echo "</form>";
 
-	if ($secu == 'oui') {
-		// y a-t-il d'anciennes sessions pour ce login ? Si oui proposer de les zapper
-
-		debut_cadre_relief();
-
-		$zap_sessions = zap_sessions($login, false);
-		echo "<b>Options de s&eacute;curit&eacute;</b><p>";
-		echo "<font size='2' face='verdana,arial,helvetica,sans-serif'>";
-		if ($zap_sessions) {
-			$redirect = "./ecrire/login.php3?secu=oui&login=$login";
-			echo "<script type=\"text/javascript\" src=\"md5.js\"></script>";
-			echo "<form action='../spip_cookie.php3' method='post'";
-			echo " onSubmit='if (this.session_password.value) {
-					this.session_password_md5.value = calcMD5(\"$alea_actuel\" + this.session_password.value);
-					this.next_session_password_md5.value = calcMD5(\"$alea_futur\" + this.session_password.value);
-					this.session_password.value = \"\";
-				}'";
-			echo ">\n";
-
-			echo "<b>Une connexion &agrave; l'espace priv&eacute; utilisant cet identifiant est en cours.</b>\n";
-			echo "Si vous &ecirc;tes en train d'utiliser un autre navigateur ou un autre ordinateur pour acc&eacute;der &agrave; ";
-			echo "l'espace priv&eacute;, cela est parfaitement normal. Si vous n'utilisez aucun autre logiciel de navigation <b>en ce moment</b>, ";
-			echo "vous pouvez tuer toutes les connexions en entrant votre mot de passe, cela renforcera la s&eacute;curit&eacute; du syst&egrave;me.";
-
-			echo "<p>\n";
-
-			// si jaja actif, on affiche le login en 'dur', et on le passe en champ hidden
-			echo "<input type='hidden' name='session_login_hidden' value='$login'>";
-
-			// si jaja inactif, le login est modifiable (puisque le challenge n'est pas utilise)
-			echo "<noscript><label><b>Login (identifiant de connexion au site) :</b><br></label>\n";
-			echo "<input type='text' name='session_login' class='formo' value=\"$login\" size='40'></noscript>";
-
-			echo "<p>\n<label><b>Mot de passe</b><br></label>";
-			echo "<input type='password' name='session_password' class='formo' value=\"\" size='40'><p>\n";
-			echo "<input type='hidden' name='session_password_md5' value=''>\n";
-			echo "<input type='hidden' name='next_session_password_md5' value=''>\n";
-
-			echo "<input type='hidden' name='essai_login' value='oui'>\n";
-			echo "<input type='hidden' name='redirect' value='$redirect'>\n";
-			echo "<input type='hidden' name='zap_sessions' value='oui'>\n";
-
-			echo "<div align='right'><input type='submit' class='fondl' name='submit' value='Terminer toutes les connexions'></div>\n";
-			echo "</form>\n";
-		}
-		else {
-			echo ("Aucune connexion à l'espace priv&eacute; n'utilise actuellement cet identifiant.");
-		}
-		echo "</font>\n";
-
-		fin_cadre_relief();
-	}
 }
 
 else {
@@ -208,7 +156,7 @@ if ($echec_cookie == "oui" AND $php_module) {
 	echo "<fieldset>\n";
 	echo "<p><b>Si vous pr&eacute;f&eacute;rez refuser les cookies</b>, une autre m&eacute;thode ";
 	echo "non s&eacute;curis&eacute;e est &agrave; votre disposition&nbsp;: \n";
-	echo "<input type='hidden' name='redirect' value='./ecrire/'>";
+	echo "<input type='hidden' name='redirect' value='./ecrire/index.php3?zap=oui'>";
 	echo "<input type='hidden' name='essai_auth_http' value='oui'> ";
 	echo "<div align='right'><input type='submit' name='submit' class='fondl' value='Identification sans cookie'></div>\n";
 	echo "</fieldset></form>\n";
@@ -219,11 +167,7 @@ $link = new Link;
 $link->addVar('secu', 'oui');
 
 echo "<p><font size='2' face='Verdana, Arial, Helvetica, sans-serif'>";
-echo "[<a href='".$link->getUrl()."'>options de s&eacute;curit&eacute;</a>";
-if ($url_site) {
-	echo " | <a href='$url_site'>retour au site public</a>";
-}
-echo "]</font>";
+echo "[<a href='$url_site'>retour au site public</a>]</font>";
 
 install_fin_html();
 
diff --git a/spip_cookie.php3 b/spip_cookie.php3
index e431344359c5edcae977c4d9cdbc31de14fc4b19..fc13f532c0795df3b89677bce36069abb6dcce53 100644
--- a/spip_cookie.php3
+++ b/spip_cookie.php3
@@ -23,10 +23,12 @@ else if ($essai_auth_http == 'logout') {
 }
 
 // rejoue le cookie pour renouveler spip_session
-if ($change_session == "oui") {
+if ($change_session == "oui" || zap_session == 'oui') {
 	if (verifier_session($spip_session)) {
 		$cookie = creer_cookie_session($auteur_session);
 		supprimer_session($spip_session);
+		if ($zap_session)
+			zap_sessions($auteur_session['login'], true);
 //		setcookie ('spip_session', $spip_session, time() - 24 * 7 * 3600);
 		setcookie('spip_session', $cookie);
 		@header('Content-Type: image/gif');
@@ -70,26 +72,21 @@ else if ($essai_login == "oui") {
 			$row_auteur['statut'] = '1comite';
 		}
 
-		if ($zap_sessions == 'oui') {
-			zap_sessions($row_auteur['login'], true);
+		if ($row_auteur['statut'] == '0minirezo') { // force le cookie pour les admins
+			$cookie_admin = "@".$row_auteur['login'];
 		}
-		else {
-			if ($row_auteur['statut'] == '0minirezo') { // force le cookie pour les admins
-				$cookie_admin = "@".$row_auteur['login'];
-			}
-			$cookie_session = creer_cookie_session($row_auteur);
-			setcookie('spip_session', $cookie_session, time() + 3600 * 24 * 7);
+		$cookie_session = creer_cookie_session($row_auteur);
+		setcookie('spip_session', $cookie_session, time() + 3600 * 24 * 7);
 	
-			// ici on fait tourner le codage du pass dans la base
-			// retournera une erreur si la base n'est pas mise a jour...
-			$nouvel_alea_futur = creer_uniqid();
-			$query = "UPDATE spip_auteurs
-				SET alea_actuel = alea_futur,
-					pass = '$md5next',
-					alea_futur = '$nouvel_alea_futur'
-				WHERE login='$login'";
-			@spip_query($query);
-		}
+		// ici on fait tourner le codage du pass dans la base
+		// retournera une erreur si la base n'est pas mise a jour...
+		$nouvel_alea_futur = creer_uniqid();
+		$query = "UPDATE spip_auteurs
+			SET alea_actuel = alea_futur,
+				pass = '$md5next',
+				alea_futur = '$nouvel_alea_futur'
+			WHERE login='$login'";
+		@spip_query($query);
 	}
 	else if ($redirect_echec) {
 		@header("Location: $redirect_echec?login=$login&erreur=pass");