From 87798e5554eb0330cd2de255e5034f0472d410a4 Mon Sep 17 00:00:00 2001 From: polo Date: Tue, 20 Apr 2021 21:46:33 +0200 Subject: mot de passe --- controller/ckeditor.php | 92 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 controller/ckeditor.php (limited to 'controller/ckeditor.php') diff --git a/controller/ckeditor.php b/controller/ckeditor.php new file mode 100644 index 0000000..1d085a7 --- /dev/null +++ b/controller/ckeditor.php @@ -0,0 +1,92 @@ + 0) + { + // supprimer espaces, tabulations et sauts de ligne en début et fin de chaine + $texte = trim($texte); + + // supprimer les sauts de ligne + $sautsDeLigne = array("\n", "\r", "\r\n"); + $texte = str_replace($sautsDeLigne, '', $texte); + + // échapper tous les ', ", \ et caractère NULL + $texte = addslashes($texte); + } + else + { + $texte = ''; // nouveau contenu + } + + return($texte); +} + +// réception du HTML créé par l'éditeur +function submitCKeditor($page, $article, $contenuPOST) +{ + // déjà fait mais on ne sait jamais + if(!isset($_SESSION['admin']) || $_SESSION['admin'] != 1) + { + header('Location: index.php?page=' . $page . '&erreur=connexion'); + } + else + { + // ne pas continuer si la variable est vide (javascript mal supporté ou utilisation de IE, bug?, erreur de l'utilisateur) + // on évitera de perdre un article existant par erreur !! + if($contenuPOST == '') + { + header('Location: index.php?page=' . $page . '&erreur=contenu_vide'); + } + else + { + $contenu = $_POST["contenu"]; + + // récupérer les liens multimedia + //require("media.php"); + //$contenu = mediaSubmit($contenu); + + // sécurité faille XSS + $configHtmLawed = array( + 'safe'=>1, // protection contre les élements et attributs dangereux + 'elements'=>'h2, h3, h4, p, br, span, i, strong, u, mark, blockquote, li, ol, ul, a, figure, hr, img, figcaption, table, tbody, tr, td', // paramètre optionnel: les balises non indiquées sont supprimées + // paramètre optionnel: les balises non indiquées sont supprimées + 'deny_attribute'=>'id', // gêner le JS hostile + // on garde 'class' et 'style' utilisés par l'ckediteur + ); + $specHtmLawed = ''; // optionnel: faire qu'un certain élément puisse n'avoir que certains attributs + $contenu = htmLawed($contenu, $configHtmLawed, $specHtmLawed); + + // supprimer espaces, tabulations et sauts de ligne en début et fin de chaine + $contenu = trim($contenu); + } + } + + // lien sans http:// + // un clic sur un lien dans l'éditeur affiche une infobulle montrant l'adresse cible du lien si celle-ci a déjà été précisée + // il est possible de cliquer sur ce lien, ce qui ouvre un onglet avec le site demandé + // toutefois si cette adresse est de type "domaine.fr" (sans http:// devant), le navigateur ne va pas rechercher un site mais un fichier comme si mon adresse était de type file:///fichier + // tomber ainsi sur une page d'erreur est déroutant: + // "ai-je perdu le texte que j'étais en train de taper?"" + // solution 1 (mauvaise): activer la redirection en cas d'erreur 404 dans le .htaccess + // solution 2 (façon pop-up): fermer ce nouvel onglet avec echo ''; + // pour faire passer par le .htaccess l'info comme quoi la page précédente comportait un éditeur ouvert... + + // enregistrement + require('model/melaine-write.php'); + nouvelArticle($page, $article, $contenu); + + // debuggage + //exit(); +} \ No newline at end of file -- cgit v1.2.3