diff options
| author | polo <ordipolo@gmx.fr> | 2023-06-02 01:21:06 +0200 |
|---|---|---|
| committer | polo <ordipolo@gmx.fr> | 2023-06-02 01:21:06 +0200 |
| commit | ce10c0ff1dd0b47bd494ae88ab2eaf6ab354b2b3 (patch) | |
| tree | 53fd317773354c86e9eff1a19ea9abad81137901 /controller | |
| parent | 082ae3df0b9dd759d56684b0221df62ea171f8ec (diff) | |
| download | melaine-ce10c0ff1dd0b47bd494ae88ab2eaf6ab354b2b3.tar.gz melaine-ce10c0ff1dd0b47bd494ae88ab2eaf6ab354b2b3.tar.bz2 melaine-ce10c0ff1dd0b47bd494ae88ab2eaf6ab354b2b3.zip | |
filtre nom des images + reorg code Image
Diffstat (limited to 'controller')
| -rw-r--r-- | controller/Security.php | 44 | ||||
| -rw-r--r-- | controller/ajax.php | 10 | ||||
| -rw-r--r-- | controller/ckeditor.php | 28 |
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'])) |
