From 1674c9486fa10c823f9f0f818814ee80ec9fd114 Mon Sep 17 00:00:00 2001 From: Fil <fil@rezo.net> Date: Wed, 11 Jan 2006 15:22:33 +0000 Subject: [PATCH] =?UTF-8?q?revision=20de=20toutes=20les=20<TEXTAREA>=20pou?= =?UTF-8?q?r=20qu'ils=20utilisent=20bien=20entites=5Fhtml()=20modification?= =?UTF-8?q?=20de=20entites=5Fhtml()=20pour=20qu'il=20ne=20touche=20pas=20a?= =?UTF-8?q?ux=20caract=C3=A8res=20<=20100=20histoire=20de=20pouvoir=20cons?= =?UTF-8?q?erver=20l'=C3=A9dition=20de=20[=20par=20exemple=20(caract?= =?UTF-8?q?=C3=A8re=20de=20raccourci)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ecrire/inc_articles.php | 2 +- ecrire/inc_filtres.php3 | 6 +++++- ecrire/inc_forum_envoi.php | 12 ++++++------ ecrire/inc_mots_type.php | 4 ++-- ecrire/inc_rubriques_edit.php | 4 ++-- ecrire/inc_sites_edit.php | 2 +- ecrire/inc_texte.php3 | 7 +++---- formulaires/inc-formulaire_forum.php3 | 5 +++-- 8 files changed, 23 insertions(+), 19 deletions(-) diff --git a/ecrire/inc_articles.php b/ecrire/inc_articles.php index 4c1ef9801f..6da9af2f03 100644 --- a/ecrire/inc_articles.php +++ b/ecrire/inc_articles.php @@ -427,7 +427,7 @@ function boites_de_config_articles($id_article, $id_rubrique, $flag_editable, echo "<P>"._T('texte_descriptif_petition')." :<BR>"; echo "<TEXTAREA NAME='texte_petition' CLASS='forml' ROWS='4' COLS='10' wrap=soft>"; - echo $texte_petition; + echo entites_html($texte_petition); echo "</TEXTAREA><P>\n"; echo "<P align='$spip_lang_right'>"; diff --git a/ecrire/inc_filtres.php3 b/ecrire/inc_filtres.php3 index ef29d0814a..d622ce4b99 100644 --- a/ecrire/inc_filtres.php3 +++ b/ecrire/inc_filtres.php3 @@ -16,8 +16,12 @@ if (!defined("_ECRIRE_INC_VERSION")) return; // Echappement des entites HTML avec correction des entites "brutes" // (generees par les butineurs lorsqu'on rentre des caracteres n'appartenant // pas au charset de la page [iso-8859-1 par defaut]) +// +// Attention on limite cette correction aux caracteres "hauts" (en fait > 99 +// pour aller plus vite que le > 127 qui serait logique), de maniere a +// preserver des echappements de caracteres "bas" (par exemple [ ou ") function corriger_entites_html($texte) { - return preg_replace(',&(#[0-9]+;),i', '&\1', $texte); + return preg_replace(',&(#[0-9][0-9][0-9]+;),i', '&\1', $texte); } // idem mais corriger aussi les &eacute; en é function corriger_toutes_entites_html($texte) { diff --git a/ecrire/inc_forum_envoi.php b/ecrire/inc_forum_envoi.php index 1046501b4c..8d384bb125 100644 --- a/ecrire/inc_forum_envoi.php +++ b/ecrire/inc_forum_envoi.php @@ -62,13 +62,13 @@ if ($valider_forum AND ($statut!='')) { (titre, texte, date_heure, nom_site, url_site, statut, id_auteur, auteur, email_auteur, id_rubrique, id_parent, id_article, id_breve, id_message, id_syndic) - VALUES ('".texte_script($titre_message)."', - '".texte_script($texte)."', NOW(), - '".texte_script($nom_site)."', - '".texte_script($url_site)."', - '".texte_script($statut)."', + VALUES ('".addslashes($titre_message)."', + '".addslashes($texte)."', NOW(), + '".addslashes($nom_site)."', + '".addslashes($url_site)."', + '".addslashes($statut)."', $connect_id_auteur, - '".texte_script($nom)."', + '".addslashes($nom)."', '$connect_email', '$id_rubrique', '$id_parent', '$id_article', '$id_breve', '$id_message', '$id_syndic')"; diff --git a/ecrire/inc_mots_type.php b/ecrire/inc_mots_type.php index 72a404c160..7203d07fce 100644 --- a/ecrire/inc_mots_type.php +++ b/ecrire/inc_mots_type.php @@ -96,7 +96,7 @@ if ($connect_statut =="0minirezo"){ if ($options == 'avancees' OR $descriptif) { echo "<B>"._T('texte_descriptif_rapide')."</B><BR>"; echo "<TEXTAREA NAME='descriptif' CLASS='forml' ROWS='4' COLS='40' wrap=soft>"; - echo $descriptif; + echo entites_html($descriptif); echo "</TEXTAREA><P>\n"; } else @@ -105,7 +105,7 @@ if ($connect_statut =="0minirezo"){ if ($options == 'avancees' OR $texte) { echo "<B>"._T('info_texte_explicatif')."</B><BR>"; echo "<TEXTAREA NAME='texte' ROWS='8' CLASS='forml' COLS='40' wrap=soft>"; - echo $texte; + echo entites_html($texte); echo "</TEXTAREA><P>\n"; } else diff --git a/ecrire/inc_rubriques_edit.php b/ecrire/inc_rubriques_edit.php index 5ab2466e76..69a77b707b 100644 --- a/ecrire/inc_rubriques_edit.php +++ b/ecrire/inc_rubriques_edit.php @@ -147,7 +147,7 @@ if ($options == "avancees" OR $descriptif) { echo "<B>"._T('texte_descriptif_rapide')."</B><BR>"; echo _T('entree_contenu_rubrique')."<BR>"; echo "<TEXTAREA NAME='descriptif' CLASS='forml' ROWS='4' COLS='40' wrap=soft>"; - echo $descriptif; + echo entites_html($descriptif); echo "</TEXTAREA><P>\n"; } else { @@ -157,7 +157,7 @@ else { echo "<B>"._T('info_texte_explicatif')."</B>"; echo aide ("raccourcis"); echo "<BR><TEXTAREA NAME='texte' ROWS='15' CLASS='formo' COLS='40' wrap=soft>"; -echo $texte; +echo entites_html($texte); echo "</TEXTAREA>\n"; if ($champs_extra) { diff --git a/ecrire/inc_sites_edit.php b/ecrire/inc_sites_edit.php index fda06a001a..bac8e275f8 100644 --- a/ecrire/inc_sites_edit.php +++ b/ecrire/inc_sites_edit.php @@ -132,7 +132,7 @@ echo "<input type='text' class='formo' name='url_site' value=\"$url_site\" size= echo "<p /><b>"._T('entree_description_site')."</b><br>"; echo "<textarea name='descriptif' rows='8' class='forml' cols='40' wrap=soft>"; -echo $descriptif; +echo entites_html($descriptif); echo "</textarea>\n"; $activer_syndic = $GLOBALS['meta']["activer_syndic"]; diff --git a/ecrire/inc_texte.php3 b/ecrire/inc_texte.php3 index 343bcb41fb..c8e5db35ab 100644 --- a/ecrire/inc_texte.php3 +++ b/ecrire/inc_texte.php3 @@ -59,7 +59,7 @@ if (!tester_variable('puce', "<img class='spip_puce' src='puce.gif' alt='-' />&n // XHTML - Preserver les balises-bloc define('_BALISES_BLOCS', 'div|pre|ul|li|blockquote|h[1-5r]|' - .'t(able|[rdh]|body|foot)|' + .'t(able|[rdh]|body|foot|extarea)|' .'form|object|center|marquee|address|' .'d[ltd]|script|noscript|map|del|ins|button|fieldset'); @@ -84,8 +84,8 @@ function code_echappement($rempl, $source='') { // Convertir en base64 $base64 = base64_encode($rempl); - // Ajouter le span/div d'echappement - $mode = preg_match(',<('._BALISES_BLOCS.')[>[:space:]]>,', $rempl) ? + // Tester si on echappe en span ou en div + $mode = preg_match(',</?('._BALISES_BLOCS.')[>[:space:]],i', $rempl) ? 'div' : 'span'; $nn = ($mode == 'div') ? "\n\n" : ''; @@ -152,7 +152,6 @@ function echappe_html($letexte, $source='', $no_transform=false) { ."class='spip_cadre' dir='ltr'>" .$echap ."</textarea></div></form>"; - $mode = "div"; break; } diff --git a/formulaires/inc-formulaire_forum.php3 b/formulaires/inc-formulaire_forum.php3 index f78dc39299..48e57ee001 100644 --- a/formulaires/inc-formulaire_forum.php3 +++ b/formulaires/inc-formulaire_forum.php3 @@ -272,10 +272,11 @@ function balise_FORMULAIRE_FORUM_dyn($titre, $table, $forums_publics, $id_rubriq } -function barre_forum($texte) -{ +function barre_forum($texte) { include_ecrire('inc_layer'); + $texte = entites_html($texte); + if (!$GLOBALS['browser_barre']) return "<textarea name='texte' rows='12' class='forml' cols='40'>$texte</textarea>"; static $num_formulaire = 0; -- GitLab