From 10954c386cacb270e4ae16837483120ca3406259 Mon Sep 17 00:00:00 2001 From: polo Date: Wed, 1 Sep 2021 23:35:42 +0200 Subject: albums --- controller/ckeditor.php | 124 +++++++++++++++++++++++++++--------------------- 1 file changed, 70 insertions(+), 54 deletions(-) (limited to 'controller/ckeditor.php') diff --git a/controller/ckeditor.php b/controller/ckeditor.php index d25e5ac..2e72be2 100644 --- a/controller/ckeditor.php +++ b/controller/ckeditor.php @@ -44,35 +44,51 @@ function preparationCKeditor($numArticle, $texte) function submitCKeditor($nomFichier) { $page = $_GET['page']; - $contenu = $_POST['contenu']; // déjà fait mais on ne sait jamais if(!isset($_SESSION['admin']) || $_SESSION['admin'] != 1) { header('Location: index.php?page=' . $page . '&erreur=connexion'); + exit(); } - else + + // sécurité faille XSS avec htmLawed + $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 + + // de l'éditeur + if(isset($_POST['contenu'])) // optionnel pour discographie { + $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 - '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 + $contenu = htmLawed($contenu, $configHtmLawed, $specHtmLawed); + // supprimer espaces, tabulations et sauts de ligne en début et fin de chaine (pour l'entrée de l'éditeur) + $contenu = trim($contenu); + + // 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($page != 'discographie' && $contenu == '') + { + header('Location: index.php?page=' . $page . '&erreur=contenu_vide'); + exit(); + } } + if($page == 'discographie') { $titre = $_POST['titre']; $annee = $_POST['annee']; $pochette = $_POST['pochette']; // une image - + // des formulaires simples $titre = htmLawed($titre, $configHtmLawed, $specHtmLawed); $titre = trim($titre); @@ -83,25 +99,6 @@ function submitCKeditor($nomFichier) // Album->imageUpload(); // test formats jpg, jpeg, png, gif, tiff // enregistrement du fichier - - // du ckeditor - $contenu = htmLawed($contenu, $configHtmLawed, $specHtmLawed); - $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 - { - // failles XSS - $contenu = htmLawed($contenu, $configHtmLawed, $specHtmLawed); - // supprimer espaces, tabulations et sauts de ligne en début et fin de chaine (pour l'entrée de l'éditeur) - $contenu = trim($contenu); - } } // lien sans http:// @@ -114,42 +111,61 @@ function submitCKeditor($nomFichier) // 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... - //var_dump($titre, $annee, $pochette, $contenu); - //die(); - - // modèle - $Article = new ArticlesManager; - $Article->setPage($page); // enregistrement - if($_GET['article'] == 0) - { - $Article->create($contenu); - } - else - { - $Article->setFileName($nomFichier); - $Article->update($contenu); - } + // var_dump($titre, $annee, $pochette, $contenu); + // die(); + // modèle if($page == 'discographie') { - $Album = new AlbumsManager; + // on instancie avec l'enfant de OneArticle + $Album = new Album($page); - var_dump($_POST); - echo('
'); //var_dump($_GET['article']); - + //var_dump($_POST); + //exit(); + // 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); + // page disco + $Album->createVignette($titre, $annee, $pochette); + + // page détail de l'album + if(!empty($_POST['contenu'])) + { + $Album->create($contenu); + } + } + else + { + // page disco + $Album->updateVignette($titre, $annee, $pochette); + + // page détail de l'album + if(isset($_POST['contenu'])) + { + $Album->update($content); + } + } + } + // autres pages + else + { + $Article = new OneArticle($page); + + if($_GET['article'] == 0) + { + $Article->create($contenu); } else { - $Album->update($titre, $annee, $pochette); + $Article->setFileName($nomFichier); + $Article->update($contenu); } - die(); } -} \ No newline at end of file +} + +function cleanHTML($contenu) +{} -- cgit v1.2.3