diff --git a/.gitattributes b/.gitattributes
index ec82313a2fe7c93ad1d18f24f47f772afb02fe72..5f608633284913000d3a3af59425f8ef6fc4f16f 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -7,6 +7,7 @@ dist/feed.png -text
 dist/formulaires/choix_mots.html -text
 dist/formulaires/formulaire_.html -text
 dist/formulaires/login_forum_abo.html -text
+dist/formulaires/logo_auteur.html -text
 dist/formulaires/oubli/charger.php -text
 dist/formulaires/oubli/modifier.php -text
 dist/formulaires/oubli/valider.php -text
diff --git a/dist/formulaires/login.html b/dist/formulaires/login.html
index ebbc11fbc1d3f163e4c8d65ed52b24ea2c52ab61..8735a4faa6fdf32104670f0f8f9432b0c0dc7527 100644
--- a/dist/formulaires/login.html
+++ b/dist/formulaires/login.html
@@ -28,9 +28,7 @@
 	<legend><:form_forum_identifiants:></legend>
 		[<p class="reponse_formulaire">(#ENV*{erreur})</p>]
 
-[(#LOGO_AUTEUR||reduire_image{100,80}|inserer_attribut{alt,#ENV{login_alt}}
-|sinon{<span id="spip_logo_auteur" class="spip_logos"></span>})]
-
+		<span id="spip_logo_auteur" class="spip_logos">[(#INCLURE{fond=formulaires/logo_auteur}{id_auteur}|inserer_attribut{alt,#ENV{login_alt}})]</span>
 
 		[<p><label for="var_login"><:login_login2:></label>(#ENV{login}|?{'',' '})<br />
 		<input type="text" class="forml" id="var_login" name="var_login" value="" size="40" /></p>]
@@ -94,37 +92,67 @@ document.getElementById('var_login[_(#ENV{login})]').focus();
 var alea_actuel;
 var alea_futur;
 var login;
-$('#pass_ajax').show().after('<input type="hidden" name="session_login_hidden" id="session_login_hidden" value="" />');
+var informe_auteur_en_cours = false;
+function informe_auteur(c){
+	eval('c = '+c); // JSON
+	if (c) {
+		alea_actuel = c.alea_actuel;
+		alea_futur = c.alea_futur;
+		$('input#session_login_hidden').attr('value',c.login);
+		// indiquer le cnx si on n'y a pas touche
+		$('input#session_remember.intact')
+		.attr('checked',c.cnx=='1'?'checked':'');
+		$('#spip_logo_auteur').html(c.logo);
+	} else {
+		$('#spip_logo_auteur').html('');
+	}
+	informe_auteur_en_cours = false;
+}
+function calcule_md5_pass(pass){
+	$('input\u005b@name=session_password\u005d').attr('value','');
+	$('form#login').attr('action','#ENV{pose_cookie}');
+	$('input\u005b@name=session_password_md5\u005d').attr('value',calcMD5(alea_actuel + pass));
+	$('input\u005b@name=next_session_password_md5\u005d').attr('value',calcMD5(alea_futur + pass));
+}
+$('#boite-login li.pass_ajax').show().parent('ol').after('<input type="hidden" name="session_login_hidden" id="session_login_hidden" value="" />');
 $('#var_login').blur(function(){
 	if (login!=$(this).attr('value')) {
 		login = $(this).attr('value');
-		$.get('#URL_ACTION{informer_auteur}',
-			{var_login:$(this).attr('value')},
-			function (c) {
-				eval('c = '+c); // JSON
-				if (c) {
-					alea_actuel = c.alea_actuel;
-					alea_futur = c.alea_futur;
-					$('input#session_login_hidden').attr('value',c.login);
-					// indiquer le cnx si on n'y a pas touche
-					$('input#session_remember.intact')
-					.attr('checked',c.cnx=='1'?'checked':'');
-					$('#spip_logo_auteur').html(c.logo);
-				} else {
-					$('#spip_logo_auteur').html('');
-				}
-		});
+		informe_auteur_en_cours = true;
+		$.get('#URL_ACTION{informer_auteur}',{var_login:$(this).attr('value')},informe_auteur);
 	}
 });
 $('form#login').submit(function(){
 	pass = $('input\u005b@name=session_password\u005d').attr('value');
 	// ne jamais laisser le pass circuler en clair
-	$('input\u005b@name=session_password\u005d').attr('value','');
 	if (pass) {
-		if (alea_actuel!=undefined) {
-			$(this).attr('action','#ENV{pose_cookie}');
-			$('input\u005b@name=session_password_md5\u005d').attr('value',calcMD5(alea_actuel + pass));
-			$('input\u005b@name=next_session_password_md5\u005d').attr('value',calcMD5(alea_futur + pass));
+		if (alea_actuel)
+			// on a l'alea, on peut lancer le submit apres avoir hashe le pass
+			calcule_md5_pass(pass);
+		else {
+			// on a pas encore l'alea de l'auteur
+			// retrouver les alea de l'auteur qui ne sont pas encore arrives (remplissage auto des champs par le navigateur) !
+			
+			// si l'information est en cours, retenter sa chance
+			if (informe_auteur_en_cours) {
+				setTimeout(function(){$('form#login').submit();},300);
+				return false;
+			}
+
+			// sinon lancer une demande
+			informe_auteur_en_cours = true;
+			$.get('#URL_ACTION{informer_auteur}',{var_login:$('#var_login').attr('value')},function(c) {
+				informe_auteur(c);
+				// le formulaire sera soumis apres reception des info auteur
+				$('form#login').submit();
+			});
+			// ou dans un delai maxi de 5s (pour eviter le blocage a cette etape)
+			// mais sans le pass, ce qui fait retomber sur le scenario de repli du login en 2 passes
+			setTimeout(function(){
+				$('input\u005b@name=session_password\u005d').attr('value','');
+				$('form#login').submit();
+			},3000);
+			return false;
 		}
 	}
 });
diff --git a/dist/formulaires/logo_auteur.html b/dist/formulaires/logo_auteur.html
new file mode 100644
index 0000000000000000000000000000000000000000..c9c270427e330fb4a0d8d12e23bbe0f7ccb3bcb5
--- /dev/null
+++ b/dist/formulaires/logo_auteur.html
@@ -0,0 +1,2 @@
+#HTTP_HEADER{Content-type:text/html;charset=#ENV{charset}}
+[(#LOGO_AUTEUR||reduire_image{100,80})]
\ No newline at end of file
diff --git a/ecrire/action/informer_auteur.php b/ecrire/action/informer_auteur.php
index 8e9d4272a3e2d8d8d3fe6f8bfd929f2b513fa3f4..f3798c648cdb89677d638a2d6caf61110ec1d6dd 100644
--- a/ecrire/action/informer_auteur.php
+++ b/ecrire/action/informer_auteur.php
@@ -28,13 +28,9 @@ function action_informer_auteur_dist() {
 			$prefs = unserialize($row['prefs']);
 			$row['cnx'] = $prefs['cnx'] == 'perma' ? '1' : '0';
 			unset($row['prefs']);
-
-			if ($chercher_logo = charger_fonction('chercher_logo', 'inc')
-			AND list($logo) = $chercher_logo($row['id_auteur'], 'id_auteur', 'on')) {
-				include_spip('inc/filtres');
-				$row['logo'] = reduire_image($logo,100,80);
-			}
-			else $row['logo']='';
+			
+			$page = evaluer_fond('formulaires/logo_auteur', array('id_auteur'=>$row['id_auteur']));
+			$row['logo'] = $page['texte'];
 		}
 		unset($row['id_auteur']);