diff options
Diffstat (limited to 'controller/ckeditor.php')
-rw-r--r-- | controller/ckeditor.php | 105 |
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 |
10 | function preparationCKeditor($numArticle, $texte) | 10 | function 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'] |
37 | function submitCKeditor($page, $nomFichier, $contenu) | 44 | function 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 |