From 0d2fd7a0a53c527d3f6f112a149960a52c1082e1 Mon Sep 17 00:00:00 2001 From: polo Date: Tue, 10 Aug 2021 02:11:20 +0200 Subject: disco --- controller/ckeditor.php | 105 ++++++++++++++++++++++++++++++++++-------------- 1 file changed, 75 insertions(+), 30 deletions(-) (limited to 'controller/ckeditor.php') diff --git a/controller/ckeditor.php b/controller/ckeditor.php index ea90726..9262da0 100644 --- a/controller/ckeditor.php +++ b/controller/ckeditor.php @@ -9,11 +9,18 @@ // avant de placer l'éditeur function preparationCKeditor($numArticle, $texte) { - // $numArticle sert à placer l'éditeur sur la page et à lire et écrire dans le bon dossier + // ici $numArticle sert uniquement à savoir si on crée ou modifie un article - // texte initial pour setData() à modifier avec l'éditeur + // texte initial inséré avec setData() dans l'éditeur, + // on recherche ici les causes expliquant qu'il n'apparaisse pas à l'ouverture de l'éditeur, + // les données précédentes sont écrasées à la validation du nouveau texte if ($numArticle > 0) { + if(empty($texte)) + { + header('Location: index.php?erreur=empty_input'); + } + // supprimer espaces, tabulations et sauts de ligne en début et fin de chaine $texte = trim($texte); @@ -34,8 +41,11 @@ function preparationCKeditor($numArticle, $texte) // réception du HTML créé par l'éditeur // le nom du fichier est celui dans $_SESSION['nomFichier'] -function submitCKeditor($page, $nomFichier, $contenu) +function submitCKeditor($nomFichier) { + $page = $_GET['page']; + $contenu = $_POST['contenu']; + // déjà fait mais on ne sait jamais if(!isset($_SESSION['admin']) || $_SESSION['admin'] != 1) { @@ -43,30 +53,45 @@ function submitCKeditor($page, $nomFichier, $contenu) } 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 !! + // 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 + 'deny_attribute'=>'id', // gêner le JS hostile + // on garde 'class' et 'style' utilisés par le ckediteur + ); + $specHtmLawed = ''; // optionnel: faire qu'un certain élément puisse n'avoir que certains attributs + } + + if($page == 'discographie') + { + $titre = $_POST['titre']; + $annee = $_POST['annee']; + $pochette = $_POST['pochette']; + + $titre = htmLawed($titre, $configHtmLawed, $specHtmLawed); + $titre = trim($titre); + $contenu = htmLawed($contenu, $configHtmLawed, $specHtmLawed); + $annee = htmLawed($annee, $configHtmLawed, $specHtmLawed); + $annee = trim($annee); + $contenu = trim($contenu); + } + else // pages comme "melaine" + { + // ne pas continuer si la variable est vide (javascript mal supporté ou utilisation de IE, bug?, erreur de l'utilisateur), risque perte de contenu !! if($contenu == '') { header('Location: index.php?page=' . $page . '&erreur=contenu_vide'); } else { - // 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 + // failles XSS $contenu = htmLawed($contenu, $configHtmLawed, $specHtmLawed); - - // supprimer espaces, tabulations et sauts de ligne en début et fin de chaine + // supprimer espaces, tabulations et sauts de ligne en début et fin de chaine (pour l'entrée de l'éditeur) $contenu = trim($contenu); } } @@ -81,22 +106,42 @@ function submitCKeditor($page, $nomFichier, $contenu) // 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... - // echo($page); - // echo($article); - // echo($contenu); - // die(); + //var_dump($titre, $annee, $pochette, $contenu); + //die(); + + // modèle + $Article = new ArticlesManager; + $Article->setPage($page); // enregistrement - require('model/melaine-write.php'); if($_GET['article'] == 0) { - nouvelArticle($page, $contenu); + $Article->create($contenu); } else { - modifArticle($page, $nomFichier, $contenu); + $Article->setFileName($nomFichier); + $Article->update($contenu); + } + + if($page == 'discographie') + { + $Album = new AlbumsManager; + + var_dump($_POST); + echo('
'); + //var_dump($_GET['article']); + + // enregistrement + if($_GET['article'] == 0) + { + // ERREUR, il faut le même nombre de paramètre pour une méthode du même nom + $Album->create($titre, $annee, $pochette); + } + else + { + $Album->update($titre, $annee, $pochette); + } + die(); } - - // debuggage - //exit(); } \ No newline at end of file -- cgit v1.2.3