diff options
Diffstat (limited to 'controller/ckeditor.php')
| -rw-r--r-- | controller/ckeditor.php | 124 |
1 files changed, 70 insertions, 54 deletions
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) | |||
| 44 | function submitCKeditor($nomFichier) | 44 | function submitCKeditor($nomFichier) |
| 45 | { | 45 | { |
| 46 | $page = $_GET['page']; | 46 | $page = $_GET['page']; |
| 47 | $contenu = $_POST['contenu']; | ||
| 48 | 47 | ||
| 49 | // déjà fait mais on ne sait jamais | 48 | // déjà fait mais on ne sait jamais |
| 50 | if(!isset($_SESSION['admin']) || $_SESSION['admin'] != 1) | 49 | if(!isset($_SESSION['admin']) || $_SESSION['admin'] != 1) |
| 51 | { | 50 | { |
| 52 | header('Location: index.php?page=' . $page . '&erreur=connexion'); | 51 | header('Location: index.php?page=' . $page . '&erreur=connexion'); |
| 52 | exit(); | ||
| 53 | } | 53 | } |
| 54 | else | 54 | |
| 55 | // sécurité faille XSS avec htmLawed | ||
| 56 | $configHtmLawed = array( | ||
| 57 | 'safe'=>1, // protection contre les élements et attributs dangereux | ||
| 58 | '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 | ||
| 59 | 'deny_attribute'=>'id', // gêner le JS hostile | ||
| 60 | // on garde 'class' et 'style' utilisés par le ckediteur | ||
| 61 | ); | ||
| 62 | $specHtmLawed = ''; // optionnel: faire qu'un certain élément puisse n'avoir que certains attributs | ||
| 63 | |||
| 64 | // de l'éditeur | ||
| 65 | if(isset($_POST['contenu'])) // optionnel pour discographie | ||
| 55 | { | 66 | { |
| 67 | $contenu = $_POST['contenu']; | ||
| 68 | |||
| 56 | // récupérer les liens multimedia | 69 | // récupérer les liens multimedia |
| 57 | //require("media.php"); | 70 | //require("media.php"); |
| 58 | //$contenu = mediaSubmit($contenu); | 71 | //$contenu = mediaSubmit($contenu); |
| 59 | 72 | ||
| 60 | // sécurité faille XSS | 73 | $contenu = htmLawed($contenu, $configHtmLawed, $specHtmLawed); |
| 61 | $configHtmLawed = array( | 74 | // supprimer espaces, tabulations et sauts de ligne en début et fin de chaine (pour l'entrée de l'éditeur) |
| 62 | 'safe'=>1, // protection contre les élements et attributs dangereux | 75 | $contenu = trim($contenu); |
| 63 | '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 | 76 | |
| 64 | 'deny_attribute'=>'id', // gêner le JS hostile | 77 | // ne pas continuer si la variable est vide (javascript mal supporté ou utilisation de IE, bug?, erreur de l'utilisateur), risque perte de contenu !! |
| 65 | // on garde 'class' et 'style' utilisés par le ckediteur | 78 | if($page != 'discographie' && $contenu == '') |
| 66 | ); | 79 | { |
| 67 | $specHtmLawed = ''; // optionnel: faire qu'un certain élément puisse n'avoir que certains attributs | 80 | header('Location: index.php?page=' . $page . '&erreur=contenu_vide'); |
| 81 | exit(); | ||
| 82 | } | ||
| 68 | } | 83 | } |
| 69 | 84 | ||
| 85 | |||
| 70 | if($page == 'discographie') | 86 | if($page == 'discographie') |
| 71 | { | 87 | { |
| 72 | $titre = $_POST['titre']; | 88 | $titre = $_POST['titre']; |
| 73 | $annee = $_POST['annee']; | 89 | $annee = $_POST['annee']; |
| 74 | $pochette = $_POST['pochette']; // une image | 90 | $pochette = $_POST['pochette']; // une image |
| 75 | 91 | ||
| 76 | // des formulaires simples | 92 | // des formulaires simples |
| 77 | $titre = htmLawed($titre, $configHtmLawed, $specHtmLawed); | 93 | $titre = htmLawed($titre, $configHtmLawed, $specHtmLawed); |
| 78 | $titre = trim($titre); | 94 | $titre = trim($titre); |
| @@ -83,25 +99,6 @@ function submitCKeditor($nomFichier) | |||
| 83 | // Album->imageUpload(); | 99 | // Album->imageUpload(); |
| 84 | // test formats jpg, jpeg, png, gif, tiff | 100 | // test formats jpg, jpeg, png, gif, tiff |
| 85 | // enregistrement du fichier | 101 | // enregistrement du fichier |
| 86 | |||
| 87 | // du ckeditor | ||
| 88 | $contenu = htmLawed($contenu, $configHtmLawed, $specHtmLawed); | ||
| 89 | $contenu = trim($contenu); | ||
| 90 | } | ||
| 91 | else // pages comme "melaine" | ||
| 92 | { | ||
| 93 | // ne pas continuer si la variable est vide (javascript mal supporté ou utilisation de IE, bug?, erreur de l'utilisateur), risque perte de contenu !! | ||
| 94 | if($contenu == '') | ||
| 95 | { | ||
| 96 | header('Location: index.php?page=' . $page . '&erreur=contenu_vide'); | ||
| 97 | } | ||
| 98 | else | ||
| 99 | { | ||
| 100 | // failles XSS | ||
| 101 | $contenu = htmLawed($contenu, $configHtmLawed, $specHtmLawed); | ||
| 102 | // supprimer espaces, tabulations et sauts de ligne en début et fin de chaine (pour l'entrée de l'éditeur) | ||
| 103 | $contenu = trim($contenu); | ||
| 104 | } | ||
| 105 | } | 102 | } |
| 106 | 103 | ||
| 107 | // lien sans http:// | 104 | // lien sans http:// |
| @@ -114,42 +111,61 @@ function submitCKeditor($nomFichier) | |||
| 114 | // solution 2 (façon pop-up): fermer ce nouvel onglet avec echo '<SCRIPT>javascript:window.close()</SCRIPT>'; | 111 | // solution 2 (façon pop-up): fermer ce nouvel onglet avec echo '<SCRIPT>javascript:window.close()</SCRIPT>'; |
| 115 | // pour faire passer par le .htaccess l'info comme quoi la page précédente comportait un éditeur ouvert... | 112 | // pour faire passer par le .htaccess l'info comme quoi la page précédente comportait un éditeur ouvert... |
| 116 | 113 | ||
| 117 | //var_dump($titre, $annee, $pochette, $contenu); | ||
| 118 | //die(); | ||
| 119 | |||
| 120 | // modèle | ||
| 121 | $Article = new ArticlesManager; | ||
| 122 | $Article->setPage($page); | ||
| 123 | 114 | ||
| 124 | // enregistrement | 115 | // enregistrement |
| 125 | if($_GET['article'] == 0) | 116 | // var_dump($titre, $annee, $pochette, $contenu); |
| 126 | { | 117 | // die(); |
| 127 | $Article->create($contenu); | ||
| 128 | } | ||
| 129 | else | ||
| 130 | { | ||
| 131 | $Article->setFileName($nomFichier); | ||
| 132 | $Article->update($contenu); | ||
| 133 | } | ||
| 134 | 118 | ||
| 119 | // modèle | ||
| 135 | if($page == 'discographie') | 120 | if($page == 'discographie') |
| 136 | { | 121 | { |
| 137 | $Album = new AlbumsManager; | 122 | // on instancie avec l'enfant de OneArticle |
| 123 | $Album = new Album($page); | ||
| 138 | 124 | ||
| 139 | var_dump($_POST); | ||
| 140 | echo('<br />'); | ||
| 141 | //var_dump($_GET['article']); | 125 | //var_dump($_GET['article']); |
| 142 | 126 | //var_dump($_POST); | |
| 127 | //exit(); | ||
| 128 | |||
| 143 | // enregistrement | 129 | // enregistrement |
| 144 | if($_GET['article'] == 0) | 130 | if($_GET['article'] == 0) |
| 145 | { | 131 | { |
| 146 | // ERREUR, il faut le même nombre de paramètre pour une méthode du même nom | 132 | // page disco |
| 147 | $Album->create($titre, $annee, $pochette); | 133 | $Album->createVignette($titre, $annee, $pochette); |
| 134 | |||
| 135 | // page détail de l'album | ||
| 136 | if(!empty($_POST['contenu'])) | ||
| 137 | { | ||
| 138 | $Album->create($contenu); | ||
| 139 | } | ||
| 140 | } | ||
| 141 | else | ||
| 142 | { | ||
| 143 | // page disco | ||
| 144 | $Album->updateVignette($titre, $annee, $pochette); | ||
| 145 | |||
| 146 | // page détail de l'album | ||
| 147 | if(isset($_POST['contenu'])) | ||
| 148 | { | ||
| 149 | $Album->update($content); | ||
| 150 | } | ||
| 151 | } | ||
| 152 | } | ||
| 153 | // autres pages | ||
| 154 | else | ||
| 155 | { | ||
| 156 | $Article = new OneArticle($page); | ||
| 157 | |||
| 158 | if($_GET['article'] == 0) | ||
| 159 | { | ||
| 160 | $Article->create($contenu); | ||
| 148 | } | 161 | } |
| 149 | else | 162 | else |
| 150 | { | 163 | { |
| 151 | $Album->update($titre, $annee, $pochette); | 164 | $Article->setFileName($nomFichier); |
| 165 | $Article->update($contenu); | ||
| 152 | } | 166 | } |
| 153 | die(); | ||
| 154 | } | 167 | } |
| 155 | } \ No newline at end of file | 168 | } |
| 169 | |||
| 170 | function cleanHTML($contenu) | ||
| 171 | {} | ||
