summaryrefslogtreecommitdiff
path: root/controller
diff options
context:
space:
mode:
authorpolo <ordipolo@gmx.fr>2023-06-02 01:21:06 +0200
committerpolo <ordipolo@gmx.fr>2023-06-02 01:21:06 +0200
commitce10c0ff1dd0b47bd494ae88ab2eaf6ab354b2b3 (patch)
tree53fd317773354c86e9eff1a19ea9abad81137901 /controller
parent082ae3df0b9dd759d56684b0221df62ea171f8ec (diff)
downloadmelaine-ce10c0ff1dd0b47bd494ae88ab2eaf6ab354b2b3.zip
filtre nom des images + reorg code Image
Diffstat (limited to 'controller')
-rw-r--r--controller/Security.php44
-rw-r--r--controller/ajax.php10
-rw-r--r--controller/ckeditor.php28
3 files changed, 74 insertions, 8 deletions
diff --git a/controller/Security.php b/controller/Security.php
index 39205c1..3475a8d 100644
--- a/controller/Security.php
+++ b/controller/Security.php
@@ -20,6 +20,50 @@ class Security
20 $chaine = trim($chaine); // supprimer espaces, tabulations et sauts de ligne en début et fin de chaine (pour l'entrée de l'éditeur) 20 $chaine = trim($chaine); // supprimer espaces, tabulations et sauts de ligne en début et fin de chaine (pour l'entrée de l'éditeur)
21 return $chaine; 21 return $chaine;
22 } 22 }
23
24 public static function secureFileName(string $chaine): string
25 {
26 // sécuriser un nom avec chemin avec basename?
27 //$chaine = basename($chaine);
28
29 /*
30 - caractères interdits sous windows / \ : * ? " < > |
31 - mac autorise les /
32 - mac interdit :
33 - linux autorise tout sauf les /
34 - imagemagick ne supporte pas les :
35
36 - 'espace' fonctionne
37 - / remplacé par firefox en :
38 - \ retire ce qui est devant le \
39 - * fonctionne
40 - ? permet le téléchargement mais pas l'affichage
41 - " ne fonctionne pas, remplacé par %22, filtrer %22
42 - < > fonctionnent
43 - | fonctionne
44 - = fonctionne, mais je filtre parce qu'on en trouve dans une URL
45 - ' ` fonctionnent
46 - % fonctionne
47 - (){}[] fonctionnent
48 - ^ fonctionne
49 - # ne fonctionne pas
50 - ~ fonctionne
51 - & fonctionne
52 */
53
54 // => on remplace tout par des _
55 // filtrer / et \ semble inutile
56
57 $cibles = [' ', '/', '\\', ':', '*', '?', '<', '>', '|', '=', "'", '`', '"', '%22', '#'];
58 return(str_replace($cibles, '_', $chaine));
59
60 // les problèmes avec \ persistent !!
61 // => javascript
62 // malheureusement document.getElementById('upload').files[0].name = chaine; ne marche pas! interdit!
63 // solution?
64 // créer une copie du fichier et l'envoyer à la place
65 // envoyer le nom souhaité au serveur en AJAX puis renommer avec PHP
66 }
23} 67}
24 68
25// erreurs à la création des mots de passe 69// erreurs à la création des mots de passe
diff --git a/controller/ajax.php b/controller/ajax.php
index ed840cd..9272dea 100644
--- a/controller/ajax.php
+++ b/controller/ajax.php
@@ -17,7 +17,8 @@ if(isset($_GET['action']) && isset($_GET['page']) && $_GET['action'] == 'upload_
17 else 17 else
18 { 18 {
19 require('model/Image.php'); 19 require('model/Image.php');
20 // vaut "true" parce qu'on reçoit une requête AJAX 20 require('controller/Security.php');
21 // paramètre "true" parce qu'on reçoit une requête AJAX
21 $Image = new Image($_GET['page'], $_GET['page'], true); 22 $Image = new Image($_GET['page'], $_GET['page'], true);
22 // les données des albums sont dans le dossier discographie 23 // les données des albums sont dans le dossier discographie
23 if($_GET['page'] === 'album') 24 if($_GET['page'] === 'album')
@@ -25,12 +26,15 @@ if(isset($_GET['action']) && isset($_GET['page']) && $_GET['action'] == 'upload_
25 $Image->setFolder('discographie'); 26 $Image->setFolder('discographie');
26 } 27 }
27 28
28 $Image->upload(); 29 $nomFichier = Security::secureFileName($_FILES['upload']['name']);
30 $Image->setFileName($nomFichier);
31 $Image->setThumbnailWidth(630);
29 32
33 $Image->upload();
30 echo($Image->reponseAjax); // attendu par l'éditeur 34 echo($Image->reponseAjax); // attendu par l'éditeur
31 // attention ici aux var_dump() ou echo() qui trainent 35 // attention ici aux var_dump() ou echo() qui trainent
32 36
33 $Image->makeThumbnail(630); // => taille de la <div> 37 $Image->makeThumbnail(); // => taille de la <div>
34 // on pourra l'agrandir en cliquant dessus 38 // on pourra l'agrandir en cliquant dessus
35 // code exécuté alors que l'utilisateur récupère la main 39 // code exécuté alors que l'utilisateur récupère la main
36 } 40 }
diff --git a/controller/ckeditor.php b/controller/ckeditor.php
index 4d4639d..3765261 100644
--- a/controller/ckeditor.php
+++ b/controller/ckeditor.php
@@ -66,7 +66,7 @@ function submitCKeditor()
66 if($_GET['page'] === 'discographie' || $_GET['page'] === 'album') 66 if($_GET['page'] === 'discographie' || $_GET['page'] === 'album')
67 { 67 {
68 $Album = new Album($_GET['page'], 'discographie'); 68 $Album = new Album($_GET['page'], 'discographie');
69 69
70 // on retrouve les données si nécessaire 70 // on retrouve les données si nécessaire
71 if(isset($_SESSION['file_code']) && $_SESSION['file_code'] != '') 71 if(isset($_SESSION['file_code']) && $_SESSION['file_code'] != '')
72 { 72 {
@@ -76,10 +76,28 @@ function submitCKeditor()
76 76
77 $nouveauTitre = Security::secureString($_POST['titre']); 77 $nouveauTitre = Security::secureString($_POST['titre']);
78 $nouvelleAnnee = Security::secureString($_POST['annee']); 78 $nouvelleAnnee = Security::secureString($_POST['annee']);
79
80 // enregistrement de l'image
79 if(!empty($_FILES['upload']['name'])) 81 if(!empty($_FILES['upload']['name']))
80 { 82 {
81 $nouvellePochette = $_FILES['upload']['name']; 83 require('model/Image.php');
82 $nouvellePochetteMini = pathinfo($_FILES['upload']['name'], PATHINFO_FILENAME) . '-mini.' . pathinfo($_FILES['upload']['name'], PATHINFO_EXTENSION); 84 $Image = new Image($_GET['page'], 'discographie', false);
85 $nomFichier = Security::secureFileName($_FILES['upload']['name']);
86 $Image->setFileName($nomFichier);
87 $Image->setThumbnailWidth(201);
88
89 $nouvellePochette = $nomFichier;
90 /*$nouvellePochetteMini = pathinfo($_FILES['upload']['name'], PATHINFO_FILENAME) . '-mini.' . pathinfo($_FILES['upload']['name'], PATHINFO_EXTENSION);*/
91 $nouvellePochetteMini = pathinfo($nomFichier, PATHINFO_FILENAME) . '-mini.' . pathinfo($nomFichier, PATHINFO_EXTENSION);
92
93 $Image->upload();
94 $Image->makeThumbnail();
95
96 $erreur = $Image->erreur;
97 if(!empty($erreur))
98 {
99 // remettre pochette précédente si il y a
100 }
83 } 101 }
84 else 102 else
85 { 103 {
@@ -89,11 +107,11 @@ function submitCKeditor()
89 107
90 //var_dump($nouvellePochetteMini); die(); 108 //var_dump($nouvellePochetteMini); die();
91 109
92 // enregistrement nouvel album 110 // enregistrement du texte JSON
93 if(!isset($_SESSION['file_code']) || $_SESSION['file_code'] == '') 111 if(!isset($_SESSION['file_code']) || $_SESSION['file_code'] == '')
94 { 112 {
95 // page disco 113 // page disco
96 $Album->createVignette($nouveauTitre, $nouvelleAnnee, $nouvellePochette, $nouvellePochetteMini); 114 $Album->createVignetteJSON($nouveauTitre, $nouvelleAnnee, $nouvellePochette, $nouvellePochetteMini);
97 115
98 // page de l'album 116 // page de l'album
99 if(!empty($_POST['contenu'])) 117 if(!empty($_POST['contenu']))