summaryrefslogtreecommitdiff
path: root/controller/ckeditor.php
diff options
context:
space:
mode:
Diffstat (limited to 'controller/ckeditor.php')
-rw-r--r--controller/ckeditor.php105
1 files changed, 75 insertions, 30 deletions
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 @@
9// avant de placer l'éditeur 9// avant de placer l'éditeur
10function preparationCKeditor($numArticle, $texte) 10function preparationCKeditor($numArticle, $texte)
11{ 11{
12 // $numArticle sert à placer l'éditeur sur la page et à lire et écrire dans le bon dossier 12 // ici $numArticle sert uniquement à savoir si on crée ou modifie un article
13 13
14 // texte initial pour setData() à modifier avec l'éditeur 14 // texte initial inséré avec setData() dans l'éditeur,
15 // on recherche ici les causes expliquant qu'il n'apparaisse pas à l'ouverture de l'éditeur,
16 // les données précédentes sont écrasées à la validation du nouveau texte
15 if ($numArticle > 0) 17 if ($numArticle > 0)
16 { 18 {
19 if(empty($texte))
20 {
21 header('Location: index.php?erreur=empty_input');
22 }
23
17 // supprimer espaces, tabulations et sauts de ligne en début et fin de chaine 24 // supprimer espaces, tabulations et sauts de ligne en début et fin de chaine
18 $texte = trim($texte); 25 $texte = trim($texte);
19 26
@@ -34,8 +41,11 @@ function preparationCKeditor($numArticle, $texte)
34 41
35// réception du HTML créé par l'éditeur 42// réception du HTML créé par l'éditeur
36// le nom du fichier est celui dans $_SESSION['nomFichier'] 43// le nom du fichier est celui dans $_SESSION['nomFichier']
37function submitCKeditor($page, $nomFichier, $contenu) 44function submitCKeditor($nomFichier)
38{ 45{
46 $page = $_GET['page'];
47 $contenu = $_POST['contenu'];
48
39 // déjà fait mais on ne sait jamais 49 // déjà fait mais on ne sait jamais
40 if(!isset($_SESSION['admin']) || $_SESSION['admin'] != 1) 50 if(!isset($_SESSION['admin']) || $_SESSION['admin'] != 1)
41 { 51 {
@@ -43,30 +53,45 @@ function submitCKeditor($page, $nomFichier, $contenu)
43 } 53 }
44 else 54 else
45 { 55 {
46 // ne pas continuer si la variable est vide (javascript mal supporté ou utilisation de IE, bug?, erreur de l'utilisateur) 56 // récupérer les liens multimedia
47 // on évitera de perdre un article existant par erreur !! 57 //require("media.php");
58 //$contenu = mediaSubmit($contenu);
59
60 // sécurité faille XSS
61 $configHtmLawed = array(
62 'safe'=>1, // protection contre les élements et attributs dangereux
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
64 'deny_attribute'=>'id', // gêner le JS hostile
65 // on garde 'class' et 'style' utilisés par le ckediteur
66 );
67 $specHtmLawed = ''; // optionnel: faire qu'un certain élément puisse n'avoir que certains attributs
68 }
69
70 if($page == 'discographie')
71 {
72 $titre = $_POST['titre'];
73 $annee = $_POST['annee'];
74 $pochette = $_POST['pochette'];
75
76 $titre = htmLawed($titre, $configHtmLawed, $specHtmLawed);
77 $titre = trim($titre);
78 $contenu = htmLawed($contenu, $configHtmLawed, $specHtmLawed);
79 $annee = htmLawed($annee, $configHtmLawed, $specHtmLawed);
80 $annee = trim($annee);
81 $contenu = trim($contenu);
82 }
83 else // pages comme "melaine"
84 {
85 // ne pas continuer si la variable est vide (javascript mal supporté ou utilisation de IE, bug?, erreur de l'utilisateur), risque perte de contenu !!
48 if($contenu == '') 86 if($contenu == '')
49 { 87 {
50 header('Location: index.php?page=' . $page . '&erreur=contenu_vide'); 88 header('Location: index.php?page=' . $page . '&erreur=contenu_vide');
51 } 89 }
52 else 90 else
53 { 91 {
54 // récupérer les liens multimedia 92 // failles XSS
55 //require("media.php");
56 //$contenu = mediaSubmit($contenu);
57
58 // sécurité faille XSS
59 $configHtmLawed = array(
60 'safe'=>1, // protection contre les élements et attributs dangereux
61 '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
62 // paramètre optionnel: les balises non indiquées sont supprimées
63 'deny_attribute'=>'id', // gêner le JS hostile
64 // on garde 'class' et 'style' utilisés par l'ckediteur
65 );
66 $specHtmLawed = ''; // optionnel: faire qu'un certain élément puisse n'avoir que certains attributs
67 $contenu = htmLawed($contenu, $configHtmLawed, $specHtmLawed); 93 $contenu = htmLawed($contenu, $configHtmLawed, $specHtmLawed);
68 94 // supprimer espaces, tabulations et sauts de ligne en début et fin de chaine (pour l'entrée de l'éditeur)
69 // supprimer espaces, tabulations et sauts de ligne en début et fin de chaine
70 $contenu = trim($contenu); 95 $contenu = trim($contenu);
71 } 96 }
72 } 97 }
@@ -81,22 +106,42 @@ function submitCKeditor($page, $nomFichier, $contenu)
81 // solution 2 (façon pop-up): fermer ce nouvel onglet avec echo '<SCRIPT>javascript:window.close()</SCRIPT>'; 106 // solution 2 (façon pop-up): fermer ce nouvel onglet avec echo '<SCRIPT>javascript:window.close()</SCRIPT>';
82 // pour faire passer par le .htaccess l'info comme quoi la page précédente comportait un éditeur ouvert... 107 // pour faire passer par le .htaccess l'info comme quoi la page précédente comportait un éditeur ouvert...
83 108
84 // echo($page); 109 //var_dump($titre, $annee, $pochette, $contenu);
85 // echo($article); 110 //die();
86 // echo($contenu); 111
87 // die(); 112 // modèle
113 $Article = new ArticlesManager;
114 $Article->setPage($page);
88 115
89 // enregistrement 116 // enregistrement
90 require('model/melaine-write.php');
91 if($_GET['article'] == 0) 117 if($_GET['article'] == 0)
92 { 118 {
93 nouvelArticle($page, $contenu); 119 $Article->create($contenu);
94 } 120 }
95 else 121 else
96 { 122 {
97 modifArticle($page, $nomFichier, $contenu); 123 $Article->setFileName($nomFichier);
124 $Article->update($contenu);
125 }
126
127 if($page == 'discographie')
128 {
129 $Album = new AlbumsManager;
130
131 var_dump($_POST);
132 echo('<br />');
133 //var_dump($_GET['article']);
134
135 // enregistrement
136 if($_GET['article'] == 0)
137 {
138 // ERREUR, il faut le même nombre de paramètre pour une méthode du même nom
139 $Album->create($titre, $annee, $pochette);
140 }
141 else
142 {
143 $Album->update($titre, $annee, $pochette);
144 }
145 die();
98 } 146 }
99
100 // debuggage
101 //exit();
102} \ No newline at end of file 147} \ No newline at end of file