summaryrefslogtreecommitdiff
path: root/controller/ckeditor.php
diff options
context:
space:
mode:
Diffstat (limited to 'controller/ckeditor.php')
-rw-r--r--controller/ckeditor.php124
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)
44function submitCKeditor($nomFichier) 44function 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
170function cleanHTML($contenu)
171{}