diff --git a/ecrire/base/abstract_sql.php b/ecrire/base/abstract_sql.php
index 2c7db6422f86cda716901f98177c0598616c67f2..2feb082fc90258ee3cafb854ede7a152afe15ace 100644
--- a/ecrire/base/abstract_sql.php
+++ b/ecrire/base/abstract_sql.php
@@ -158,7 +158,6 @@ function sql_showtable($table, $serveur='', $table_spip = false)
 	$f = sql_serveur('showtable', $serveur);
 	$f = $f($table, $serveur);
 	if (!$f) return array();
-	spip_log("show $table " . join(',',$f));
 	if (isset($GLOBALS['tables_principales'][$table]['join']))
 		$f['join'] = $GLOBALS['tables_principales'][$table]['join'];
 	elseif (isset($GLOBALS['tables_auxiliaires'][$table]['join']))
diff --git a/ecrire/inc/filtres.php b/ecrire/inc/filtres.php
index 96bfb24a88bc213a83b79e7e93895ea07dfdd815..8153facc57c87dfee2efede7a4c499982c2069cd 100644
--- a/ecrire/inc/filtres.php
+++ b/ecrire/inc/filtres.php
@@ -1717,7 +1717,7 @@ function filtre_find($array, $val) {
 //
 
 // http://doc.spip.org/@calcul_pagination
-function calcul_pagination($total, $nom, $position, $pas, $liste = true, $modele='') {
+function calcul_pagination($total, $nom, $position, $pas, $liste = true, $modele='', $connect='') {
 	static $ancres = array();
 	$bloc_ancre = "";
 	
@@ -1761,7 +1761,7 @@ function calcul_pagination($total, $nom, $position, $pas, $liste = true, $modele
 		return $bloc_ancre;
 
 	if ($modele) $modele = '_'.$modele;
-	return recuperer_fond("modeles/pagination$modele", $pagination);
+	return recuperer_fond("modeles/pagination$modele", $pagination, false, true, $connect);
 }
 
 // recuperere le chemin d'une css existante et :
diff --git a/ecrire/public.php b/ecrire/public.php
index 81b4d5605bb6f36b08f6761909679268724a8f75..d4f4d6ca28e876a15de198873ea34d3db580d4d6 100644
--- a/ecrire/public.php
+++ b/ecrire/public.php
@@ -20,7 +20,7 @@ if (defined('_INC_PUBLIC')) {
 	$fonds = array($fond);
 	if (is_array($fond)) $fonds=$fond;
 	foreach($fonds as $fond){
-		$subpage = inclure_page($fond, $contexte_inclus);
+		$subpage = inclure_page($fond, $contexte_inclus, _request('connect'));
 	
 		if ($subpage['process_ins'] == 'html'){
 			echo $subpage['texte'];
@@ -116,7 +116,7 @@ if (defined('_INC_PUBLIC')) {
 
 	$tableau_des_erreurs = 	$tableau_des_temps = array();
 	$assembler = charger_fonction('assembler', 'public');
-	$page = $assembler($fond);
+	$page = $assembler($fond, _request('connect'));
 
 	if (isset($page['status'])) {
 		include_spip('inc/headers');
diff --git a/ecrire/public/assembler.php b/ecrire/public/assembler.php
index 13dfb1f1694ac0ad71b111003490218291285660..7a47c1ec85100123c3b45333b0af801a68b5cf2e 100644
--- a/ecrire/public/assembler.php
+++ b/ecrire/public/assembler.php
@@ -16,7 +16,7 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
 // fonction principale declenchant tout le service
 // elle-meme ne fait que traiter les cas particuliers, puis passe la main.
 // http://doc.spip.org/@public_assembler_dist
-function public_assembler_dist($fond) {
+function public_assembler_dist($fond, $connect='') {
 	  global $forcer_lang, $ignore_auth_http;
 
 	// multilinguisme
@@ -98,7 +98,7 @@ function public_assembler_dist($fond) {
 	}
 
 	if ($l) lang_select();
-	return assembler_page ($fond);
+	return assembler_page ($fond, $connect);
 }
 
 
@@ -106,7 +106,7 @@ function public_assembler_dist($fond) {
 // calcule la page et les entetes
 //
 // http://doc.spip.org/@assembler_page
-function assembler_page ($fond) {
+function assembler_page ($fond, $connect='') {
 	global $flag_preserver,$lastmodified,
 		$use_cache;
 
@@ -154,7 +154,7 @@ function assembler_page ($fond) {
 			}
 		} else {
 			$parametrer = charger_fonction('parametrer', 'public');
-			$page = $parametrer($fond, '', $chemin_cache);
+			$page = $parametrer($fond, '', $chemin_cache, $connect);
 
 			//ajouter les scripts poue le mettre en cache
 			$page['insert_js_fichier'] = pipeline("insert_js",array("type" => "fichier","data" => array()));
@@ -221,7 +221,7 @@ function stop_inclure($fragment) {
 	}
 }
 // http://doc.spip.org/@inclure_page
-function inclure_page($fond, $contexte_inclus) {
+function inclure_page($fond, $contexte_inclus, $connect='') {
 	global $lastmodified;
 	if (!defined('_PAS_DE_PAGE_404'))
 		define('_PAS_DE_PAGE_404',1);
@@ -265,7 +265,7 @@ function inclure_page($fond, $contexte_inclus) {
 	// sinon on la calcule
 	else {
 		$parametrer = charger_fonction('parametrer', 'public');
-		$page = $parametrer($fond, $contexte_inclus, $chemin_cache);
+		$page = $parametrer($fond, $contexte_inclus, $chemin_cache, $connect);
 		$lastmodified = time();
 		// et on l'enregistre sur le disque
 		if ($chemin_cache
@@ -546,7 +546,7 @@ function message_erreur_404 ($erreur= "") {
 // fonction permettant de recuperer le resultat du calcul d'un squelette
 // pour une inclusion dans un flux
 // http://doc.spip.org/@recuperer_fond
-function recuperer_fond($fond, $contexte=array(),$protect_xml=false, $trim=true) {
+function recuperer_fond($fond, $contexte=array(),$protect_xml=false, $trim=true, $connect='') {
 	// on est peut etre dans l'espace prive au moment de l'appel
 	if  (!defined ('_INC_PUBLIC')) define ('_INC_PUBLIC', 1);
 	if (($fond=='')&&isset($contexte['fond']))
@@ -554,7 +554,7 @@ function recuperer_fond($fond, $contexte=array(),$protect_xml=false, $trim=true)
 
 	$texte = "";
 	foreach(is_array($fond) ? $fond : array($fond) as $f){
-		$page = inclure_page($f, $contexte);
+		$page = inclure_page($f, $contexte, $connect);
 		if ($GLOBALS['flag_ob'] AND ($page['process_ins'] != 'html')) {
 			ob_start();
 			eval('?' . '>' . $page['texte']);
@@ -595,7 +595,7 @@ function creer_contexte_de_modele($args) {
 
 // Calcule le modele et retourne la mini-page ainsi calculee
 // http://doc.spip.org/@inclure_modele
-function inclure_modele($type, $id, $params, $lien) {
+function inclure_modele($type, $id, $params, $lien, $connect='') {
 	static $compteur;
 	if (++$compteur>10) return ''; # ne pas boucler indefiniment
 
@@ -673,7 +673,7 @@ function inclure_modele($type, $id, $params, $lien) {
 	$GLOBALS['compt_note'] = 0;
 
 	// Appliquer le modele avec le contexte
-	$retour = trim(recuperer_fond($fond, $contexte));
+	$retour = trim(recuperer_fond($fond, $contexte, false, true, $connect));
 
 	// On restitue les globales de notes telles qu'elles etaient avant l'appel
 	// du modele. Si le modele n'a pas affiche ses notes, tant pis (elles *doivent*
diff --git a/ecrire/public/balises.php b/ecrire/public/balises.php
index 02ac2f4e2a13ccd5549240d59f504f1bee55bc0c..2bad7d9b324521fdc95a7563fb968523537dbfe3 100644
--- a/ecrire/public/balises.php
+++ b/ecrire/public/balises.php
@@ -513,9 +513,13 @@ function balise_LESAUTEURS_dist ($p) {
 		$p->code = "safehtml($_lesauteurs)";
 		// $p->interdire_scripts = true;
 	} else {
+		$connect = $p->boucles[$p->id_boucle]->sql_serveur;
 		$p->code = "recuperer_fond(
 			'modeles/lesauteurs',
-			array('id_article' => ".champ_sql('id_article', $p)."))";
+			array('id_article' => ".champ_sql('id_article', $p)
+			."), false, true, "
+			. _q($connect)
+			.")";
 		$p->interdire_scripts = false; // securite apposee par recuperer_fond()
 	}
 
@@ -600,14 +604,14 @@ function balise_PAGINATION_dist($p, $liste='true') {
 	$__modele = $__modele?", $__modele":"";
 
 	$p->boucles[$b]->numrows = true;
-
+	$connect = $p->boucles[$b]->sql_serveur;
 	$p->code = "calcul_pagination(
 	(isset(\$Numrows['$b']['grand_total']) ?
 		\$Numrows['$b']['grand_total'] : \$Numrows['$b']['total']
 	), ".$p->boucles[$b]->modificateur['debut_nom'].",
 		\$Pile[0]['debut'.".$p->boucles[$b]->modificateur['debut_nom']."],"
 	. $p->boucles[$b]->total_parties
-	. ", $liste$__modele)";
+	  . ", $liste$__modele,''," . _q($connect) . ")";
 
 	$p->interdire_scripts = false;
 	return $p;
@@ -1213,7 +1217,8 @@ function balise_INCLURE_dist($p) {
 		if ($flag_env) {
 			$l = "array_merge(\$Pile[0],$l)";
 		}
-		$p->code = "recuperer_fond('',".$l.",true, false)";
+		$connect = $p->boucles[$p->id_boucle]->sql_serveur;
+		$p->code = "recuperer_fond('',".$l.",true, false, " . _q($connect) .")";
 	} else {
 		$n = interprete_argument_balise(1,$p);
 		$p->code = '(($c = find_in_path(' . $n . ')) ? spip_file_get_contents($c) : "")';
@@ -1265,9 +1270,10 @@ function balise_MODELE_dist($p) {
 		}
 	}
 
+	$connect = $p->boucles[$p->id_boucle]->sql_serveur;
 	$p->code = "( ((\$recurs=(isset(\$Pile[0]['recurs'])?\$Pile[0]['recurs']:0))<5)?
 	recuperer_fond('modeles/".$nom."',
-		creer_contexte_de_modele(array(".join(',', $code_contexte).",'recurs='.(++\$recurs), \$GLOBALS['spip_lang']))):'')";
+		creer_contexte_de_modele(array(".join(',', $code_contexte).",'recurs='.(++\$recurs), \$GLOBALS['spip_lang'])),false,true," . _q($connect) . "):'')";
 	$p->interdire_scripts = false; // securite assuree par le squelette
 
 	return $p;
diff --git a/ecrire/public/composer.php b/ecrire/public/composer.php
index b2af6c6b7bf55eeb50557069d4ce69fed7810a90..86986cf630f46a33a7b62519ddd13e1e07cd5c2c 100644
--- a/ecrire/public/composer.php
+++ b/ecrire/public/composer.php
@@ -29,9 +29,8 @@ include_spip('public/debug'); # toujours prevoir le pire
 # Toutefois pour 2. et 3. preferer la technique de la surcharge
 
 // http://doc.spip.org/@public_composer_dist
-function public_composer_dist($squelette, $mime_type, $gram, $source) {
+function public_composer_dist($squelette, $mime_type, $gram, $source, $connect) {
 
-	$connect = _request('connect');
 	$nom = $mime_type . ($connect ?  "_$connect" : '') . '_' . md5($squelette);
 
 	// si squelette est deja en memoire (INCLURE  a repetition)
@@ -316,7 +315,7 @@ function calcul_exposer ($id, $type, $reference) {
 				list($table,$hierarchie) = $x;
 				$exposer[$element][$id_element] = true;
 				if ($hierarchie) {
-					 $row = sql_fetsel(array('id_rubrique'), array($table), array("$element=$id_element"));
+					$row = sql_fetsel(array('id_rubrique'), array($table), array("$element=" . _q($id_element)));
 					$hierarchie = calculer_hierarchie($row['id_rubrique']);
 				foreach (split(',',$hierarchie) as $id_rubrique)
 					$exposer['id_rubrique'][$id_rubrique] = true;
diff --git a/ecrire/public/parametrer.php b/ecrire/public/parametrer.php
index 33695a5f71ea71cb2da0c6fc09c4dc93286e6c3f..85f264af46c570e3b050c0bb46d8f39bd201f55a 100644
--- a/ecrire/public/parametrer.php
+++ b/ecrire/public/parametrer.php
@@ -281,7 +281,7 @@ function generer_generer_url($type, $p)
 # En cas d'erreur process_ins est absent et texte est un tableau de 2 chaines
 
 // http://doc.spip.org/@public_parametrer_dist
-function public_parametrer_dist($fond, $local='', $cache='')  {
+function public_parametrer_dist($fond, $local='', $cache='', $connect='')  {
 	// verifier que la fonction assembler est bien chargee (cf. #608)
 	$assembler = charger_fonction('assembler', 'public');
 
@@ -366,7 +366,7 @@ function public_parametrer_dist($fond, $local='', $cache='')  {
 	if ($GLOBALS['var_mode'] == 'debug')
 		$GLOBALS['debug_objets']['contexte'][$sourcefile] = $local;
 
-	if ($fonc = $composer($skel, $mime_type, $gram, $sourcefile)){
+	if ($fonc = $composer($skel, $mime_type, $gram, $sourcefile, $connect)){
 		spip_timer($a = 'calcul page '.rand(0,1000));
 		$notes = calculer_notes(); // conserver les notes...