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 | {} | ||