From 7ce2c047f7c86db82035cf249039cd770a1f1c8d Mon Sep 17 00:00:00 2001
From: "Committo,Ergo:sum" <esj@rezo.net>
Date: Sun, 12 Nov 2006 17:01:55 +0000
Subject: [PATCH] =?UTF-8?q?T=C3=A2che=20#328=20et=20rationnalisation=20du?=
 =?UTF-8?q?=20cod:=20les=20fonctions=20de=20inc/utils=20produisant=20du=20?=
 =?UTF-8?q?code=20HTML=20et=20des=20entetes=20HTTP=20sont=20=C3=A9vacu?=
 =?UTF-8?q?=C3=A9es=20ailleurs.=20En=20particulier,=20la=20plupart=20des?=
 =?UTF-8?q?=20redirections=20=C3=A9tant=20=C3=A0=20present=20dans=20les=20?=
 =?UTF-8?q?scripts=20de=20action/,=20redirige=5Fpar=5Fentete=20passe=20dan?=
 =?UTF-8?q?s=20inc/headers.=20Plus=20un=20peu=20de=20partage=20de=20code?=
 =?UTF-8?q?=20ici=20ou=20l=C3=A0.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 ecrire/action/cookie.php        | 22 +----------
 ecrire/balise/login_public.php  | 11 ++++--
 ecrire/base/db_mysql.php        |  1 +
 ecrire/exec/admin_plugin.php    |  1 +
 ecrire/exec/aide_index.php      |  2 +-
 ecrire/exec/auteur_infos.php    |  1 +
 ecrire/exec/auteurs_edit.php    |  2 +-
 ecrire/exec/configuration.php   |  5 ++-
 ecrire/exec/convert_utf8.php    |  1 +
 ecrire/exec/legender_auteur.php |  1 +
 ecrire/exec/upgrade.php         |  1 +
 ecrire/inc/acces.php            |  1 +
 ecrire/inc/flock.php            |  1 +
 ecrire/inc/getdocument.php      |  1 +
 ecrire/inc/headers.php          | 62 ++++++++++++++++++++++--------
 ecrire/inc/lang.php             |  1 +
 ecrire/inc/minipres.php         |  1 +
 ecrire/inc/plugin.php           |  5 ++-
 ecrire/inc/presentation.php     |  4 +-
 ecrire/inc/sax.php              | 10 +----
 ecrire/inc/session.php          |  5 ++-
 ecrire/inc/utils.php            | 67 +++++++--------------------------
 ecrire/inc_version.php          |  1 +
 ecrire/install/etape_.php       |  7 +++-
 ecrire/install/etape_4.php      |  4 ++
 ecrire/install/etape_5.php      |  4 ++
 ecrire/install/etape_6.php      |  4 ++
 ecrire/install/etape_ldap5.php  |  3 ++
 ecrire/install/etape_unpack.php |  2 +-
 ecrire/public.php               |  1 +
 ecrire/public/assembler.php     |  2 +
 ecrire/public/balises.php       |  4 +-
 ecrire/public/debug.php         | 24 +++++-------
 ecrire/public/parametrer.php    |  2 +-
 34 files changed, 135 insertions(+), 129 deletions(-)

diff --git a/ecrire/action/cookie.php b/ecrire/action/cookie.php
index 7a05b5b8d4..7892e12abb 100644
--- a/ecrire/action/cookie.php
+++ b/ecrire/action/cookie.php
@@ -179,26 +179,6 @@ if ($var_lang_ecrire) {
 	$redirect = parametre_url($redirect,'lang',$var_lang_ecrire,'&');
  }
 
-// Redirection
-// Sous Apache, les cookies avec une redirection fonctionnent
-// Sinon, on fait un refresh HTTP
-if (ereg("^Apache", $GLOBALS['SERVER_SOFTWARE'])) {
-	redirige_par_entete($redirect);
+  redirige_par_entete($redirect, true);
 }
-else {
-	include_spip('inc/headers');
-	include_spip('inc/lang');
-	spip_header("Refresh: 0; url=" . $redirect);
-	echo  html_lang_attributes(),
-	  "<head><meta http-equiv='Refresh' content='0; url=",
-	  $redirect,
-	  "'></head>\n",
-	  "<body><a href='",
-	  $redirect,
-	  "'>",
-	  _T('navigateur_pas_redirige'),
-	  "</a></body></html>";
- }
-}
-
 ?>
diff --git a/ecrire/balise/login_public.php b/ecrire/balise/login_public.php
index 4746d2e7ce..61188f0962 100644
--- a/ecrire/balise/login_public.php
+++ b/ecrire/balise/login_public.php
@@ -64,9 +64,10 @@ function login_explicite($login, $cible) {
 	($auteur_session['statut']=='0minirezo'
 	OR $auteur_session['statut']=='1comite')) {
 		if ($cible != $action) {
-			if (!headers_sent() AND !$_GET['var_mode'])
+			if (!headers_sent() AND !$_GET['var_mode']) {
+				include_spip('inc/headers');
 				redirige_par_entete($cible);
-			else {
+			} else {
 				include_spip('inc/minipres');
 				return http_href($cible, _T('login_par_ici'));
 			}
@@ -91,8 +92,10 @@ function login_pour_tous($login, $cible, $action) {
 	$pose_cookie = generer_url_public('spip_cookie');
 	$auth_http = '';	
 	if ($echec_cookie AND !$ignore_auth_http) {
-		include_spip('inc/headers');
-		if (php_module()) $auth_http = $pose_cookie;
+		if (($GLOBALS['flag_sapi_name']
+		     AND eregi("apache", @php_sapi_name()))
+		OR ereg("^Apache.* PHP", $_SERVER['SERVER_SOFTWARE']))
+			$auth_http = $pose_cookie;
 	}
 	// Attention dans le cas 'intranet' la proposition de se loger
 	// par auth_http peut conduire a l'echec.
diff --git a/ecrire/base/db_mysql.php b/ecrire/base/db_mysql.php
index 074143f8e2..855688fcd7 100644
--- a/ecrire/base/db_mysql.php
+++ b/ecrire/base/db_mysql.php
@@ -48,6 +48,7 @@ function base_db_mysql_dist()
 
 	if (!_DIR_RESTREINT) return false;
 
+	include_spip('inc/headers');
 	redirige_par_entete(generer_url_ecrire('upgrade', 'reinstall=oui', true));
 }
 
diff --git a/ecrire/exec/admin_plugin.php b/ecrire/exec/admin_plugin.php
index b959f06bb2..41f4b55363 100644
--- a/ecrire/exec/admin_plugin.php
+++ b/ecrire/exec/admin_plugin.php
@@ -29,6 +29,7 @@ function exec_admin_plugin() {
 		enregistre_modif_plugin();
 		// pour la peine, un redirige, 
 		// que les plugin charges soient coherent avec la liste
+		include_spip('inc/headers');
 		redirige_par_entete(generer_url_ecrire('admin_plugin'));
 	}
 	else
diff --git a/ecrire/exec/aide_index.php b/ecrire/exec/aide_index.php
index 34fae87bfd..5e9475c1b7 100644
--- a/ecrire/exec/aide_index.php
+++ b/ecrire/exec/aide_index.php
@@ -13,6 +13,7 @@
 if (!defined("_ECRIRE_INC_VERSION")) return;
 
 include_spip('inc/minipres');
+include_spip('inc/headers');
 include_spip('inc/layer');
 include_spip('inc/texte');
 
@@ -457,7 +458,6 @@ else {
 				$_SERVER['HTTP_IF_MODIFIED_SINCE']);
 			$if_modified_since = trim(str_replace('GMT', '', $if_modified_since));
 			if ($if_modified_since == $gmoddate) {
-				include_spip('inc/headers');
 				http_status(304);
 				exit;
 			}
diff --git a/ecrire/exec/auteur_infos.php b/ecrire/exec/auteur_infos.php
index a490b8b439..37fe6e6081 100644
--- a/ecrire/exec/auteur_infos.php
+++ b/ecrire/exec/auteur_infos.php
@@ -32,6 +32,7 @@ function exec_auteur_infos_dist()
 	// id_auteur nul ==> creation, et seuls les admins complets creent
 	if (!$id_auteur AND $connect_toutes_rubriques) {
 		$arg = "0/";
+		include_spip('inc/headers');
 		redirige_par_entete(generer_action_auteur('legender_auteur', $arg, $redirect, true));
 		exit;
 	}
diff --git a/ecrire/exec/auteurs_edit.php b/ecrire/exec/auteurs_edit.php
index 97fa31da21..56abaa600a 100644
--- a/ecrire/exec/auteurs_edit.php
+++ b/ecrire/exec/auteurs_edit.php
@@ -13,7 +13,7 @@
 if (!defined("_ECRIRE_INC_VERSION")) return;
 
 $id_auteur = intval(_request('id_auteur'));
-
+include_spip('inc/headers');
 redirige_par_entete("./?exec=auteur_infos&id_auteur=$id_auteur&initial=-1");
 
 ?>
diff --git a/ecrire/exec/configuration.php b/ecrire/exec/configuration.php
index 091210dd50..175bde8a14 100644
--- a/ecrire/exec/configuration.php
+++ b/ecrire/exec/configuration.php
@@ -26,7 +26,10 @@ include_spip('inc/config');
 	exit;
 }
 
-if (!$connect_toutes_rubriques) redirige_par_entete(generer_url_ecrire('admin_tech','',true));
+ if (!$connect_toutes_rubriques) {
+	include_spip('inc/headers');
+	redirige_par_entete(generer_url_ecrire('admin_tech','',true));
+ }
 
 //
 // Modifications
diff --git a/ecrire/exec/convert_utf8.php b/ecrire/exec/convert_utf8.php
index 291ed6b21e..a6e4a7b595 100644
--- a/ecrire/exec/convert_utf8.php
+++ b/ecrire/exec/convert_utf8.php
@@ -204,6 +204,7 @@ function exec_convert_utf8_dist() {
 	// C'est fini, supprimer le fichier autorisant les modifs
 	fin_admin($action);
 	
+	include_spip('inc/headers');
 	// bouton "retour au site" + redirige_par_entete
 	echo "<p align='right'> <a href='" . generer_url_ecrire("config_lang")
 	. "'> &gt;&gt; "._T('icone_retour')."</a>";
diff --git a/ecrire/exec/legender_auteur.php b/ecrire/exec/legender_auteur.php
index 91e4dd40b5..125c3c140a 100644
--- a/ecrire/exec/legender_auteur.php
+++ b/ecrire/exec/legender_auteur.php
@@ -31,6 +31,7 @@ function exec_legender_auteur_dist()
         }
 
 	if (!$echec AND $retour) {
+		include_spip('inc/headers');
 		redirige_par_entete(rawurldecode($retour));
 		exit;
 	}
diff --git a/ecrire/exec/upgrade.php b/ecrire/exec/upgrade.php
index 48905e0e18..ff5c4c3d27 100644
--- a/ecrire/exec/upgrade.php
+++ b/ecrire/exec/upgrade.php
@@ -13,6 +13,7 @@
 if (!defined("_ECRIRE_INC_VERSION")) return;
 
 include_spip('inc/actions');
+include_spip('inc/headers');
 
 // http://doc.spip.org/@exec_upgrade_dist
 function exec_upgrade_dist() {
diff --git a/ecrire/inc/acces.php b/ecrire/inc/acces.php
index ff6a1373cb..390f821097 100644
--- a/ecrire/inc/acces.php
+++ b/ecrire/inc/acces.php
@@ -165,6 +165,7 @@ function ecrire_acces() {
 		ecrire_logins($fichier, $logins);
 		fclose($fichier);
 	} else {
+	  include_spip('inc/headers');
 	  redirige_par_entete(generer_url_action('test_dirs', '', true));
 	}
 
diff --git a/ecrire/inc/flock.php b/ecrire/inc/flock.php
index 3a5a7fe691..6c505b8fc7 100644
--- a/ecrire/inc/flock.php
+++ b/ecrire/inc/flock.php
@@ -183,6 +183,7 @@ function sous_repertoire($base, $subdir, $nobase = false) {
 		fclose($f);
 	else {
 		spip_log("echec creation $base${subdir}");
+		include_spip('inc/headers');
 		redirige_par_entete(
 			generer_url_action('test_dirs',"test_dir=$base${subdir}",true));
 	}
diff --git a/ecrire/inc/getdocument.php b/ecrire/inc/getdocument.php
index 12689af255..d87f9eaa5d 100644
--- a/ecrire/inc/getdocument.php
+++ b/ecrire/inc/getdocument.php
@@ -92,6 +92,7 @@ function deplacer_fichier_upload($source, $dest, $move=false) {
 		if ($f) {
 			fclose ($f);
 		} else {
+			include_spip('inc/headers');
 			redirige_par_entete(generer_url_action("test_dirs", "test_dir=". dirname($dest), true));
 		}
 		@unlink($dest);
diff --git a/ecrire/inc/headers.php b/ecrire/inc/headers.php
index 26a290fd57..43726ebaff 100644
--- a/ecrire/inc/headers.php
+++ b/ecrire/inc/headers.php
@@ -11,26 +11,45 @@
 \***************************************************************************/
 
 
-//
 if (!defined("_ECRIRE_INC_VERSION")) return;
 
+// envoyer le navigateur sur une nouvelle adresse
+// en evitant les attaques par la redirection (souvent indique par 1 $_GET)
 
-// Interdire les attaques par manipulation des headers
-// http://doc.spip.org/@spip_header
-function spip_header($h) {
-	@header(strtr($h, "\n\r", "  "));
-}
+// http://doc.spip.org/@redirige_par_entete
+function redirige_par_entete($url, $equiv='') {
 
-// cf. liste des sapi_name - http://fr.php.net/php_sapi_name
-// http://doc.spip.org/@php_module
-function php_module() {
-	global $SERVER_SOFTWARE, $flag_sapi_name;
-	return (
-		($flag_sapi_name AND eregi("apache", @php_sapi_name()))
-		OR ereg("^Apache.* PHP", $SERVER_SOFTWARE)
-		);
-}
+	$url = strtr($url, "\n\r", "  ");
+	# en theorie on devrait faire ca tout le temps, mais quand la chaine
+	# commence par ? c'est imperatif, sinon l'url finale n'est pas la bonne
+	if ($url[0]=='?')
+		$url = url_de_base().$url;
+
+	// Il n'y a que sous Apache que setcookie puis redirection fonctionne
+
+	if (!$equiv OR ereg("^Apache", $GLOBALS['SERVER_SOFTWARE'])) {
+		@header("Location: " . $url);
+	} else {
+		@header("Refresh: 0; url=" . $url);
+		$equiv = "<meta http-equiv='Refresh' content='0; url=$url'>";
+	}
+	include_spip('inc/lang');
+	echo '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">',"\n",
+	  html_lang_attributes(),'
+<head>',
+	  $equiv,'
+<title>HTTP 302</title>
+</head>
+<body>
+<h1>HTTP 302</h1>
+<a href="',
+	  quote_amp($url),
+	  '">',
+	  _T('navigateur_pas_redirige'),
+	  '</a></body></html>';
 
+	exit;
+}
 
 // http://doc.spip.org/@http_status
 function http_status($status) {
@@ -74,4 +93,17 @@ function http_no_cache() {
 }
 
 
+// envoi de l'image demandee dans le code ci-dessus
+// http://doc.spip.org/@envoie_image_vide
+function envoie_image_vide() {
+	$image = pack("H*", "47494638396118001800800000ffffff00000021f90401000000002c0000000018001800000216848fa9cbed0fa39cb4da8bb3debcfb0f86e248965301003b");
+	header("Content-Type: image/gif");
+	header("Content-Length: ".strlen($image));
+	header("Cache-Control: no-cache,no-store");
+	header("Pragma: no-cache");
+	header("Connection: close");
+	echo $image;
+	flush();
+}
+
 ?>
diff --git a/ecrire/inc/lang.php b/ecrire/inc/lang.php
index 6ce99ff3c4..b3f21ccef8 100644
--- a/ecrire/inc/lang.php
+++ b/ecrire/inc/lang.php
@@ -261,6 +261,7 @@ function verifier_lang_url() {
 		$destination = parametre_url(self(),'lang', $lang_demandee, '&');
 		if (isset($GLOBALS['var_mode']))
 			$destination = parametre_url($destination, 'var_mode', $GLOBALS['var_mode'], '&');
+		include_spip('inc/headers');
 		redirige_par_entete($destination);
 	}
 
diff --git a/ecrire/inc/minipres.php b/ecrire/inc/minipres.php
index 17261b9e77..b2454d80ac 100644
--- a/ecrire/inc/minipres.php
+++ b/ecrire/inc/minipres.php
@@ -212,6 +212,7 @@ function exec_test_ajax_dist() {
 		// on est appele par <noscript>
 		case -1:
 			spip_setcookie('spip_accepte_ajax', -1);
+			include_spip('inc/headers');
 			redirige_par_entete(_DIR_IMG_PACK.'puce-orange-anim.gif');
 			break;
 
diff --git a/ecrire/inc/plugin.php b/ecrire/inc/plugin.php
index dbbc40734a..11f8a74cd8 100644
--- a/ecrire/inc/plugin.php
+++ b/ecrire/inc/plugin.php
@@ -386,9 +386,10 @@ function plugin_verifie_conformite($plug,&$arbre){
 // http://doc.spip.org/@verifie_include_plugins
 function verifie_include_plugins() {
 	if (_request('exec')!="admin_plugin"){
-		if (@is_readable(_DIR_PLUGINS))
+		if (@is_readable(_DIR_PLUGINS)) {
+			include_spip('inc/headers');
 			redirige_par_entete(generer_url_ecrire("admin_plugin"));
-
+		}
 		// plus de repertoire plugin existant, le menu n'existe plus
 		// on fait une mise a jour silencieuse
 		// generer les fichiers php precompiles
diff --git a/ecrire/inc/presentation.php b/ecrire/inc/presentation.php
index a42a5bc5d1..286dd43f49 100644
--- a/ecrire/inc/presentation.php
+++ b/ecrire/inc/presentation.php
@@ -1738,7 +1738,9 @@ function fin_page() {
 	. fin_grand_cadre(true)
 	. "</div>" // cf. <div center> ouverte dans conmmencer_page()
 	. $GLOBALS['rejoue_session']
-	. generer_spip_cron()
+	. '<div style="background-image: url(\''
+	. generer_url_action('cron')
+	. '\');"></div>'
 	. (defined('_TESTER_NOSCRIPT') ? _TESTER_NOSCRIPT : '')
 	. "</body></html>\n";
 }
diff --git a/ecrire/inc/sax.php b/ecrire/inc/sax.php
index b9fa6f3844..15c96e61df 100644
--- a/ecrire/inc/sax.php
+++ b/ecrire/inc/sax.php
@@ -43,7 +43,7 @@ function debutElement($parser, $name, $attrs)
   $sep = ' ';
   foreach ($attrs as $k => $v) {
 	$delim = strpos($v, "'") === false ? "'" : '"';
-	$val = $phraseur_xml->translate_entities($v);
+	$val = entites_html($v);
 	$att .= $sep .  $k . "=" . $delim
 	  . ($delim !== '"' ? str_replace('&quot;', '"', $val) : $val)
 	  . $delim;
@@ -88,7 +88,7 @@ function textElement($parser, $data)
   $contenu = &$phraseur_xml->contenu;
   $contenu[$depth] .= preg_match('/^script/',$phraseur_xml->ouvrant[$depth])
     ? $data
-    : $phraseur_xml->translate_entities($data);
+    : entites_html($data);
 }
 
 // http://doc.spip.org/@PiElement
@@ -119,12 +119,6 @@ function defautElement($parser, $data)
   $contenu[$depth] .= $data;
 }
 
-// http://doc.spip.org/@translate_entities
-function translate_entities($data)
- {
-   return entites_html($data);
- }
-
 // http://doc.spip.org/@xml_parsefile
 function xml_parsefile($xml_parser, $file)
 {
diff --git a/ecrire/inc/session.php b/ecrire/inc/session.php
index 8642ac33e9..1679e4b6c3 100644
--- a/ecrire/inc/session.php
+++ b/ecrire/inc/session.php
@@ -64,9 +64,10 @@ function ajouter_session($auteur) {
 	}
 	$texte .= "?".">\n";
 
-	if (!ecrire_fichier($fichier_session, $texte))
+	if (!ecrire_fichier($fichier_session, $texte)) {
+		include_spip('inc/headers');
 		redirige_par_entete(generer_url_action('test_dirs','test_dir=' . _DIR_SESSIONS,true));
-	else return $spip_session;
+	} else return $spip_session;
 }
 
 //
diff --git a/ecrire/inc/utils.php b/ecrire/inc/utils.php
index f67ca13f6c..aa39181309 100644
--- a/ecrire/inc/utils.php
+++ b/ecrire/inc/utils.php
@@ -396,13 +396,10 @@ function self($root = false) {
 // http://doc.spip.org/@_T
 function _T($texte, $args=array()) {
 
-	$f = charger_fonction('traduire', 'inc');
-	$text = $f($texte,$GLOBALS['spip_lang']);
+	static $traduire=false ;
 
-	if (!empty($GLOBALS['xhtml'])) {
-		include_spip('inc/charsets');
-		$text = html2unicode($text, true /* secure */);
-	}
+ 	if (!$traduire) $traduire = charger_fonction('traduire', 'inc');
+	$text = $traduire($texte,$GLOBALS['spip_lang']);
 
 	if (!$text) 
 		// pour les chaines non traduites
@@ -512,33 +509,16 @@ function spip_touch($fichier, $duree=0, $touch=true) {
 	return false;
 }
 
-// Pour executer des taches de fond discretement, on utilise background-image
-// car contrairement a un iframe vide, les navigateurs ne diront pas qu'ils
-// n'ont pas fini de charger, c'est plus rassurant.
+// Ce declencheur de tache de fond, de l'espace prive (cf inc_presentation)
+// et de l'espace public (cf #SPIP_CRON dans inc_balise), est appelee
+// par un background-image  car contrairement a un iframe vide, 
+// les navigateurs ne diront pas qu'ils n'ont pas fini de charger,
+// c'est plus rassurant.
 // C'est aussi plus discret qu'un <img> sous un navigateur non graphique.
-// Cette fonction est utilisee pour l'espace prive (cf inc_presentation)
-// et pour l'espace public (cf #SPIP_CRON dans inc_balise)
 
-// http://doc.spip.org/@generer_spip_cron
-function generer_spip_cron() {
-  return '<div style="background-image: url(\'' . generer_url_action('cron') .
-	'\');"></div>';
-}
-
-// envoi de l'image demandee dans le code ci-dessus
-// http://doc.spip.org/@envoie_image_vide
-function envoie_image_vide() {
-	$image = pack("H*", "47494638396118001800800000ffffff00000021f90401000000002c0000000018001800000216848fa9cbed0fa39cb4da8bb3debcfb0f86e248965301003b");
-	header("Content-Type: image/gif");
-	header("Content-Length: ".strlen($image));
-	header("Cache-Control: no-cache,no-store");
-	header("Pragma: no-cache");
-	header("Connection: close");
-	echo $image;
-	flush();
-}
 // http://doc.spip.org/@action_cron
 function action_cron() {
+	include_spip('inc/headers');
 	envoie_image_vide();
 	cron (1);
 }
@@ -566,31 +546,6 @@ function cron ($gourmand=false) {
 	}
 }
 
-// envoyer le navigateur sur une nouvelle adresse
-// en evitant les attaques par la redirection (souvent indique par 1 $_GET)
-
-// http://doc.spip.org/@redirige_par_entete
-function redirige_par_entete($url) {
-	# en theorie on devrait faire ca tout le temps, mais quand la chaine
-	# commence par ? c'est imperatif, sinon l'url finale n'est pas la bonne
-	if ($url[0]=='?')
-		$url = url_de_base().$url;
-
-	@header("Location: " . strtr($url, "\n\r", "  "));
-
-	echo '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
-<html><head>
-<title>302 Found</title>
-</head>
-<body>
-<h1>302 Found</h1>
-<a href="'
-.quote_amp($url)
-.'">Click here</a>.
-</body></html>';
-
-	exit;
-}
 
 // transformation XML des "&" en "&amp;"
 // http://doc.spip.org/@quote_amp
@@ -1133,6 +1088,7 @@ function spip_initialisation($pi=NULL, $pa=NULL, $ti=NULL, $ta=NULL) {
 			unset ($GLOBALS['meta']['noyau']);
 		}
 	}
+
 	// en cas d'echec refaire le fichier
 	if (!is_array($GLOBALS['meta']) AND _FILE_CONNECT) {
 		include_spip('inc/meta');
@@ -1150,6 +1106,7 @@ function spip_initialisation($pi=NULL, $pa=NULL, $ti=NULL, $ta=NULL) {
 
 	// Verifier le visiteur
 	if (_FILE_CONNECT) verifier_visiteur();
+
 }
 
 // Annuler les magic quotes \' sur GET POST COOKIE et GLOBALS ;
@@ -1184,11 +1141,13 @@ function verifier_visiteur() {
 		// il faut forcer l'init si ce n'est fait
 
 		@spip_initialisation();
+
 		$var_f = charger_fonction('session', 'inc');
 		if ($var_f()) return $GLOBALS['auteur_session']['statut'];
 		include_spip('inc/actions');
 		return verifier_php_auth();
 	}
+
 	return false;
 }
 
diff --git a/ecrire/inc_version.php b/ecrire/inc_version.php
index 19244862c5..db7f601d30 100644
--- a/ecrire/inc_version.php
+++ b/ecrire/inc_version.php
@@ -354,6 +354,7 @@ OR _request('action') == 'test_dirs')) {
 
 	// Si on peut installer, on lance illico
 	if (!_DIR_RESTREINT) {
+		include_spip('inc/headers');
 		redirige_par_entete(generer_url_ecrire("install"));
 	} else {
 	// Si on est dans le site public, dire que qq s'en occupe
diff --git a/ecrire/install/etape_.php b/ecrire/install/etape_.php
index 1ae37c0642..cc36d92253 100644
--- a/ecrire/install/etape_.php
+++ b/ecrire/install/etape_.php
@@ -10,15 +10,18 @@
  *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
 \***************************************************************************/
 
+if (!defined("_ECRIRE_INC_VERSION")) return;	#securite
+
 // http://doc.spip.org/@inc_install_
 function install_etape__dist()
 {
 	global $spip_lang_right;
 
 	$menu_langues = menu_langues('var_lang_ecrire');
-	if (!$menu_langues)
+	if (!$menu_langues) {
+		include_spip('inc/headers');
 		redirige_par_entete(generer_url_action('test_dirs'));
-	else {
+	} else {
 		install_debut_html();
 		echo "<div><img alt='SPIP' src='" . _DIR_IMG_PACK . "logo-spip.gif' /></div>\n",
 			"<div class='petit-centre'><p>",info_copyright(),"</p></div>\n",
diff --git a/ecrire/install/etape_4.php b/ecrire/install/etape_4.php
index 74f4d6debf..645bb23ca5 100644
--- a/ecrire/install/etape_4.php
+++ b/ecrire/install/etape_4.php
@@ -10,6 +10,10 @@
  *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
 \***************************************************************************/
 
+if (!defined("_ECRIRE_INC_VERSION")) return;	#securite
+
+include_spip('inc/headers');
+
 // http://doc.spip.org/@inc_install_4
 function install_etape_4_dist()
 {
diff --git a/ecrire/install/etape_5.php b/ecrire/install/etape_5.php
index 739c6f2125..8da28173fe 100644
--- a/ecrire/install/etape_5.php
+++ b/ecrire/install/etape_5.php
@@ -10,6 +10,10 @@
  *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
 \***************************************************************************/
 
+if (!defined("_ECRIRE_INC_VERSION")) return;	#securite
+
+include_spip('inc/headers');
+
 // http://doc.spip.org/@inc_install_5
 function install_etape_5_dist()
 {
diff --git a/ecrire/install/etape_6.php b/ecrire/install/etape_6.php
index 428dec0abe..d43d8ca0c9 100644
--- a/ecrire/install/etape_6.php
+++ b/ecrire/install/etape_6.php
@@ -10,6 +10,10 @@
  *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
 \***************************************************************************/
 
+if (!defined("_ECRIRE_INC_VERSION")) return;	#securite
+
+include_spip('inc/headers');
+
 // http://doc.spip.org/@inc_install_6
 function install_etape_6_dist()
 {
diff --git a/ecrire/install/etape_ldap5.php b/ecrire/install/etape_ldap5.php
index 9897e30623..a1fa7940fb 100644
--- a/ecrire/install/etape_ldap5.php
+++ b/ecrire/install/etape_ldap5.php
@@ -10,6 +10,9 @@
  *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
 \***************************************************************************/
 
+if (!defined("_ECRIRE_INC_VERSION")) return;
+include_spip('inc/headers');
+
 // http://doc.spip.org/@inc_install_ldap5
 function install_etape_ldap5_dist()
 {
diff --git a/ecrire/install/etape_unpack.php b/ecrire/install/etape_unpack.php
index 495db244ce..90601aac8f 100644
--- a/ecrire/install/etape_unpack.php
+++ b/ecrire/install/etape_unpack.php
@@ -12,7 +12,7 @@
 
 if (!defined("_ECRIRE_INC_VERSION")) return;
 include_spip('inc/actions');
-
+include_spip('inc/headers');
 // http://doc.spip.org/@inc_install_unpack
 function install_etape_unpack_dist()
 {
diff --git a/ecrire/public.php b/ecrire/public.php
index 5eb89435a0..61ec019c74 100644
--- a/ecrire/public.php
+++ b/ecrire/public.php
@@ -46,6 +46,7 @@ if (defined('_INC_PUBLIC')) {
 
 	// Est-ce une action ?
 	if ($action = _request('action')) {
+		include_spip('inc/headers');
 		$var_f = charger_fonction($action, 'action');
 		$var_f();
 		if ($redirect) redirige_par_entete(urldecode($redirect));
diff --git a/ecrire/public/assembler.php b/ecrire/public/assembler.php
index f67c7fcc7d..e88ba13eb8 100644
--- a/ecrire/public/assembler.php
+++ b/ecrire/public/assembler.php
@@ -33,6 +33,7 @@ function public_assembler_dist($fond) {
 	// Si envoi pour un forum, enregistrer puis rediriger
 	if (isset($_POST['confirmer_forum'])
 	OR (isset($_POST['ajouter_mot']) AND $GLOBALS['afficher_texte']=='non')) {
+		include_spip('inc/headers');
 		$f = charger_fonction('forum_insert', 'inc');
 		redirige_par_entete($f());
 	}
@@ -49,6 +50,7 @@ function public_assembler_dist($fond) {
 		if ($auteur_session['statut'] == '0minirezo')
 			spip_log('debug !');
 		else
+			include_spip('inc/headers');
 			redirige_par_entete(generer_url_public('login',
 			'url='.rawurlencode(
 			parametre_url(self(), 'var_mode', 'debug', '&')
diff --git a/ecrire/public/balises.php b/ecrire/public/balises.php
index da85894b45..94db567adb 100644
--- a/ecrire/public/balises.php
+++ b/ecrire/public/balises.php
@@ -502,7 +502,9 @@ function balise_FIN_SURLIGNE_dist($p) {
 // ATTENTION: cette balise efface parfois les boutons admin implicites
 // http://doc.spip.org/@balise_SPIP_CRON_dist
 function balise_SPIP_CRON_dist ($p) {
-	$p->code = '"' . str_replace('"', '\"', (generer_spip_cron())) . '"';
+	$p->code = '"<div style=\"background-image: url(\'' . 
+		generer_url_action('cron') .
+		'\');\"></div>"';
 	$p->interdire_scripts = false;
 	return $p;
 }
diff --git a/ecrire/public/debug.php b/ecrire/public/debug.php
index 16c047f752..3250895c0f 100644
--- a/ecrire/public/debug.php
+++ b/ecrire/public/debug.php
@@ -126,21 +126,17 @@ function erreur_squelette($message='', $lieu='') {
 	// Eviter les boucles infernales
 	if (++$runs > 4) {
 		if ($_COOKIE['spip_admin'] OR
-		$auteur_session['statut'] == '0minirezo' OR
+		($auteur_session['statut'] == '0minirezo') OR
 		($GLOBALS['var_mode'] == 'debug')) {
-			include_spip('inc/headers');
-			lang_select($auteur_session['lang']);
-			http_no_cache();
-			echo _DOCTYPE_ECRIRE,
-			  html_lang_attributes(),
-			  "<head>\n<title>",
-			  ('Spip ' . $GLOBALS['spip_version_affichee'] . ' ' .
-			   _T('admin_debug') . ' ' .
-			   supprimer_tags(extraire_multi($GLOBALS['meta']['nom_site']))), 
-			  "</title>\n</head><body>",
-			  affiche_erreurs_page($tableau_des_erreurs),
-			  "</body></html>";
-			exit;
+			include_spip('inc/minipres');
+
+			$titre = 'Spip '
+				. $GLOBALS['spip_version_affichee']
+				. ' '
+				. _T('admin_debug')
+				. ' '
+				. supprimer_tags(extraire_multi($GLOBALS['meta']['nom_site']));
+			minipres($titre, affiche_erreurs_page($tableau_des_erreurs));
 		}
 	}
 }
diff --git a/ecrire/public/parametrer.php b/ecrire/public/parametrer.php
index bb53c0e27b..b6184fbd79 100644
--- a/ecrire/public/parametrer.php
+++ b/ecrire/public/parametrer.php
@@ -270,7 +270,7 @@ function public_parametrer_dist($fond, $local='', $cache='')  {
 					if ($url) { // sinon les navigateurs pataugent
 						$url = texte_script(str_replace('&amp;', '&', $url));
 						return array('texte' => "<".
-						"?php redirige_par_entete('$url'); ?" . ">",
+						"?php header('Location: $url'); ?" . ">",
 						'process_ins' => 'php');
 					}
 				}
-- 
GitLab