diff --git a/formulaires/inc-formulaire_inscription.php3 b/formulaires/inc-formulaire_inscription.php3
index b939c73754b94dea18ddacf947f4552593249eb1..f03df1a9babf8041825d975d122891fc969ab7e9 100644
--- a/formulaires/inc-formulaire_inscription.php3
+++ b/formulaires/inc-formulaire_inscription.php3
@@ -21,78 +21,74 @@ function balise_FORMULAIRE_INSCRIPTION_dyn($mode, $focus) {
 	// Si une inscription est autorisee, on enregistre le demandeur
 	// comme 'nouveau' et on lui envoie ses codes par email ; lors de
 	// sa premiere connexion il obtiendra son statut final (auth->activer())
-	if (($mode == 'redac' AND lire_meta('accepter_inscriptions') == 'oui')
+	if (!(($mode == 'redac' AND lire_meta('accepter_inscriptions') == 'oui')
 	OR ($mode == 'forum' AND (
 		lire_meta('accepter_visiteurs') == 'oui'
 		OR lire_meta('forums_publics') == 'abo'
 		)
-	))
-		$statut = 'nouveau';
-	else
+	    )))
 		return _T('pass_rien_a_faire_ici');
 
 	// recuperer les donnees envoyees
 	$mail_inscription = _request('mail_inscription');
 	$nom_inscription = _request('nom_inscription');
 
-	if (test_mail_ins($mode, $mail_inscription)
-	AND _request('nom_inscription')) {
-		// envoyer les identifiants si l'abonne n'existe pas deja.
-		$s = spip_query("SELECT statut, id_auteur, login, pass
-		FROM spip_auteurs WHERE email='".addslashes($mail_inscription)."'");
-		if (!$row = spip_fetch_array($s)) {
-			$login = test_login($nom_inscription, $mail_inscription);
-			$id_auteur = spip_abstract_insert('spip_auteurs', 
-				'(nom, email, login, statut)',
-				"('".addslashes($nom_inscription)."',
-				'".addslashes($mail_inscription)."', '$login', '$statut')");
-			$pass = creer_pass_pour_auteur($id_auteur);
-			$message = envoyer_inscription($mail_inscription,
-				$statut, $mode, $login, $pass, $nom_inscription);
-		}
-
-		else {
-			// existant mais encore muet, renvoyer les infos
-			if ($row['statut'] == 'nouveau') {
-				// recreer le pass
-				$pass = creer_pass_pour_auteur($row['id_auteur']);
-				$message = envoyer_inscription(
-					$mail_inscription, $row['statut'], $mode,
-					$row['login'], $pass, $nom_inscription);
-			} else {
-				// dead
-				if ($row['statut'] == '5poubelle')
-					$message = _T('form_forum_access_refuse');
-				// deja inscrit
-				else
-					$message = _T('form_forum_email_deja_enregistre');
-			}
-		}
-	}
-
-	// demande du formulaire
-	else {
-		if (!$nom_inscription) 
-			$message = '';
-		else {
-			spip_log("Mail incorrect: '$mail_inscription'");
-			$message = _T('info_email_invalide');
-		}
-	}
+	if (!$nom_inscription) 
+		$message = '';
+	elseif (!test_mail_ins($mode, $mail_inscription))
+		$message = _T('info_email_invalide');
+	else	$message = message_inscription($mail_inscription, $nom_inscription, $mode);
 
 	return array("formulaire_inscription", 0,
-		array('focus' => $focus,
-			'target' => _request('target'),
-			'message' => $message,
-			'mode' => $mode));
+			array('focus' => $focus,
+				'target' => _request('target'),
+				'message' => $message,
+				'mode' => $mode));
 }
 
 // fonction qu'on peut redefinir pour filtrer selon l'adresse mail
 // cas general: controler juste que l'adresse n'est pas vide et est valide
 
 function test_mail_ins($mode, $mail) {
-	if ($mail = trim($mail))
-		return email_valide($mail);
+	return  ($mail = trim($mail)) AND email_valide($mail);
+}
+
+
+function message_inscription($mail_inscription, $nom_inscription, $mode)
+{
+  // envoyer les identifiants si l'abonne n'existe pas deja.
+  $row = spip_fetch_array(spip_query("SELECT statut, id_auteur, login
+FROM spip_auteurs WHERE email='".addslashes($mail_inscription)."'"));
+
+  if (!$row) {
+    $login = test_login($nom_inscription, $mail_inscription);
+    $pass = creer_pass_pour_auteur(spip_abstract_insert('spip_auteurs', 
+				'(nom, email, login, statut)',
+				"('".
+				addslashes($nom_inscription) .
+				"',' ".
+				addslashes($mail_inscription) .
+				"', '" .
+				$login .
+				"', 'nouveau')"));
+
+    $message = envoyer_inscription($mail_inscription, 'nouveau', $mode, $login, $pass, $nom_inscription);
+  } else {
+	// existant mais encore muet, renvoyer les infos
+    if ($row['statut'] == 'nouveau') {
+      // recreer le pass
+      $pass = creer_pass_pour_auteur($row['id_auteur']);
+      $message = envoyer_inscription($mail_inscription, $row['statut'], $mode,
+				     $row['login'], $pass, $nom_inscription);
+    } else {
+      // dead
+      if ($row['statut'] == '5poubelle')
+	$message = _T('form_forum_access_refuse');
+      else
+      // deja inscrit
+	$message = _T('form_forum_email_deja_enregistre');
+    }
+  }
 }