diff --git a/ecrire/base/import_all.php b/ecrire/base/import_all.php
index 115524adf3b3667f0fe727c5c714da943f50a53a..0517fd7cb40d310071977172e90c6af506a7822b 100644
--- a/ecrire/base/import_all.php
+++ b/ecrire/base/import_all.php
@@ -112,6 +112,7 @@ function import_all_fin($request) {
 	effacer_meta('restauration_charset_sql_connexion');
 	effacer_meta('attributs_archive_restauration');
 	effacer_meta('restauration_table_prefix');
+	effacer_meta('restauration_table_prefix_source');
 	effacer_meta('vieille_version_installee');
 	if ($request['insertion'] == 'passe2') 
 		sql_drop_table("spip_translate");
diff --git a/ecrire/exec/import_all.php b/ecrire/exec/import_all.php
index 4d084622bc0864b75f1a34ae41a7628173679eb3..a5e38328388b294f4585576943c6fd2b6316e18d 100644
--- a/ecrire/exec/import_all.php
+++ b/ecrire/exec/import_all.php
@@ -47,7 +47,15 @@ function exec_import_all_dist()
 			     array('archive' => $archive));
 		$admin = charger_fonction('admin', 'inc');
 		echo $admin('import_all', $action, $commentaire, !$insert);
-	} else redirige_url_ecrire();
+	} else {
+		// on ne sait pas quoi importer, il faut sortir de la !
+		include_spip('base/import_all');
+		import_all_fin(array());
+		include_spip('inc/import');
+		detruit_restaurateur();
+		effacer_meta('admin');
+		redirige_url_ecrire();
+	}
 }
 
 // http://doc.spip.org/@import_queldir
diff --git a/ecrire/inc/auth.php b/ecrire/inc/auth.php
index d93f9b60dc1ad67b0cf693e24d914464c7278416..07d7ce7acfcba60f848753c65b70542e985349ae 100644
--- a/ecrire/inc/auth.php
+++ b/ecrire/inc/auth.php
@@ -78,7 +78,9 @@ function inc_auth_dist() {
 	// Session valide en cours ?
 	if (isset($_COOKIE['spip_session'])) {
 		$session = charger_fonction('session', 'inc');
-		if ($connect_id_auteur = $session()) {
+		if ($connect_id_auteur = $session() 
+		OR $connect_id_auteur===0 // reprise sur restauration
+		) {
 			$auth_can_disconnect = true;
 		} else unset($_COOKIE['spip_session']);
 	}
@@ -114,7 +116,8 @@ function inc_auth_dist() {
 	}
 
 	$where = (is_numeric($connect_id_auteur)
-	AND $connect_id_auteur>0) ?
+	/*AND $connect_id_auteur>0*/ // reprise lors des restaurations
+	) ?
 	  "id_auteur=$connect_id_auteur" :
 	  (!$connect_login ? '' : "login=" . sql_quote($connect_login));
 
diff --git a/ecrire/inc/session.php b/ecrire/inc/session.php
index 381f5912be3c5b2833879132b772d86e6815e2e5..1bf8a772db5d2e0e2fdae767a48c6cfc2e26a6f0 100644
--- a/ecrire/inc/session.php
+++ b/ecrire/inc/session.php
@@ -46,6 +46,7 @@ function inc_session_dist($auteur=false)
 
 // http://doc.spip.org/@ajouter_session
 function ajouter_session($auteur) {
+	if (!is_numeric($auteur['id_auteur'])) return false;
 	// Si le client a deja une session valide pour son id_auteur
 	// on conserve le meme fichier
 	$auteur['id_auteur'] = intval($auteur['id_auteur']);
@@ -93,7 +94,7 @@ function session_get($nom) {
 // (auteurs identifies seulement)
 // http://doc.spip.org/@actualiser_sessions
 function actualiser_sessions($auteur){
-	if (!intval($id_auteur = $auteur['id_auteur']))
+	if (!is_numeric($auteur['id_auteur']))
 		return;
 
 	// memoriser l'auteur courant (celui qui modifie la fiche)
@@ -215,7 +216,7 @@ function verifier_session($change=false) {
 		ajouter_session($GLOBALS['visiteur_session']);
 	}
 
-	return $GLOBALS['visiteur_session']['id_auteur'];
+	return is_numeric($GLOBALS['visiteur_session']['id_auteur'])?$GLOBALS['visiteur_session']['id_auteur']:null;
 }
 
 // Code a inserer par inc/presentation pour rejouer la session
diff --git a/ecrire/maj/vieille_base/1917/create.php b/ecrire/maj/vieille_base/1917/create.php
index 5057e10c30f116b30de02c41fa329c2df960752b..2d6cc798f8c878b5c5307487cb333cc51ca26886 100644
--- a/ecrire/maj/vieille_base/1917/create.php
+++ b/ecrire/maj/vieille_base/1917/create.php
@@ -25,10 +25,10 @@ function maj_vieille_base_1917_create() {
 	# if ($vu) return; else $vu = true;
 
 	foreach($tables_principales as $k => $v)
-		spip_create_table($k, $v['field'], $v['key'], true);
+		spip_create_vieille_table($k, $v['field'], $v['key'], true);
 
 	foreach($tables_auxiliaires as $k => $v)
-		spip_create_table($k, $v['field'], $v['key'], false);
+		spip_create_vieille_table($k, $v['field'], $v['key'], false);
 
 	foreach($tables_images as $k => $v)
 		spip_query("INSERT IGNORE INTO spip_types_documents (extension, inclus, titre, id_type) VALUES ('$k', 'image', '" .
diff --git a/ecrire/maj/vieille_base/1927/create.php b/ecrire/maj/vieille_base/1927/create.php
index 99182556f006f9db34f02e63bc9498dd253622b4..da020705eafe7099178c9cb2dc289df82632c8e6 100644
--- a/ecrire/maj/vieille_base/1927/create.php
+++ b/ecrire/maj/vieille_base/1927/create.php
@@ -25,10 +25,10 @@ function maj_vieille_base_1927_create() {
 	# if ($vu) return; else $vu = true;
 
 	foreach($tables_principales as $k => $v)
-		spip_mysql_create($k, $v['field'], $v['key'], true);
+		spip_create_vieille_table($k, $v['field'], $v['key'], true);
 
 	foreach($tables_auxiliaires as $k => $v)
-		spip_mysql_create($k, $v['field'], $v['key'], false);
+		spip_create_vieille_table($k, $v['field'], $v['key'], false);
 
 	foreach($tables_images as $k => $v)
 		spip_query_db("INSERT IGNORE INTO spip_types_documents (extension, inclus, titre, id_type) VALUES ('$k', 'image', '" .
diff --git a/ecrire/maj/vieille_base/create.php b/ecrire/maj/vieille_base/create.php
index 7509e2aa22db70bb30e16a7fca88a381edd575a3..1015c7e93178143d336712dd93ed5d0eb93c4c29 100644
--- a/ecrire/maj/vieille_base/create.php
+++ b/ecrire/maj/vieille_base/create.php
@@ -14,7 +14,7 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
 
 $serveur_vieille_base =0;
 
-function	spip_create_table($table,$fields,$keys,$autoinc){
+function	spip_create_vieille_table($table,$fields,$keys,$autoinc){
 	static $fcreate = null;
 	$serveur = $GLOBALS['serveur_vieille_base'];
 	if (!$fcreate) $fcreate = sql_serveur('create', $serveur);
@@ -30,25 +30,34 @@ function maj_vieille_base_create_dist($version_cible){
 	$new_prefixe = "XXspip$version";
 	// ici on ecrit la meta dans la table 'officielle'
 	ecrire_meta('restauration_table_prefix',$new_prefixe,'non');
-	ecrire_meta('vieille_version_installee',$version,'non');
+	ecrire_meta('vieille_version_installee',$version_cible,'non');
+	$metas = $GLOBALS['meta'];
 	
-	//$GLOBALS['table_prefix'] = $new_prefixe;
-	//lire_metas();
 	$prefixe_source = $GLOBALS['connexions'][0]['prefixe'];
 	$GLOBALS['serveur_vieille_base'] = 0;
 	$GLOBALS['connexions'][$GLOBALS['serveur_vieille_base']] = $GLOBALS['connexions'][0];
 	$GLOBALS['connexions'][$GLOBALS['serveur_vieille_base']]['prefixe'] = $new_prefixe;
+	lire_metas();
+	
+	if (!isset($GLOBALS['meta']['restauration_table_prefix_source'])) {
 
-	$create = charger_fonction('create',"maj/vieille_base/$version");
-	$create();
+		$create = charger_fonction('create',"maj/vieille_base/$version");
+		$create();
+	
+		// reecrire les metas dans la table provisoire
+		foreach($metas as $k=>$v)
+			ecrire_meta($k,$v);
+		ecrire_meta('restauration_table_prefix_source',$prefixe_source,'non');
 	
-	// reecrire les metas dans la table provisoire
-	foreach($GLOBALS['meta'] as $k=>$v)
-		ecrire_meta($k,$v);
-	ecrire_meta('restauration_table_prefix_source',$prefixe_source,'non');
+		// noter le numero de version installee
+		ecrire_meta('version_installee',$version,'non');
+	}
 	
-	// noter le numero de version installee
-	ecrire_meta('version_installee',$version_cible,'non');
+	if ($version_cible!=$GLOBALS['meta']['version_installee']) {
+		// upgrader jusqu'a la cible
+		include_spip('base/upgrade');
+		maj_base($version_cible);
+	}
 
 }