summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--controller/Security.php11
-rw-r--r--controller/installation.php12
-rw-r--r--model/Image.php13
-rw-r--r--à faire après livraison.txt2
4 files changed, 29 insertions, 9 deletions
diff --git a/controller/Security.php b/controller/Security.php
index 0ab4c02..4bdba08 100644
--- a/controller/Security.php
+++ b/controller/Security.php
@@ -56,16 +56,19 @@ class Security
56 // filtrer / et \ semble inutile 56 // filtrer / et \ semble inutile
57 57
58 $cibles = [' ', '/', '\\', ':', '*', '?', '<', '>', '|', '=', "'", '`', '"', '%22', '#']; 58 $cibles = [' ', '/', '\\', ':', '*', '?', '<', '>', '|', '=', "'", '`', '"', '%22', '#'];
59 $chaine = str_replace($cibles, '_', $chaine); 59 $chaine = str_replace($cibles, '_', $chaine); // nécéssite l'extension mbstring
60 $chaine = mb_strtolower($chaine); 60 $chaine = mb_strtolower($chaine);
61 return($chaine); 61 return($chaine);
62 62
63 // les problèmes avec \ persistent !! 63 // les problèmes avec \ persistent !!
64 // => javascript 64 // => javascript
65 // malheureusement document.getElementById('upload').files[0].name = chaine; ne marche pas! interdit! 65 // malheureusement document.getElementById('upload').files[0].name = chaine; ne marche pas! interdit!
66 // solution? 66 // javascript ne doit pas pouvoir accéder au système de fichiers
67 // créer une copie du fichier et l'envoyer à la place 67 // solutions:
68 // envoyer le nom souhaité au serveur en AJAX puis renommer avec PHP 68 // - au lieu de fournir une chaine (le chemin du fichier), donner un objet à files[0].name
69 // - créer une copie du fichier et l'envoyer à la place
70 // - envoyer le fichier en AJAX
71 // - envoyer le nom du fichier à part puis renommer en PHP
69 } 72 }
70} 73}
71 74
diff --git a/controller/installation.php b/controller/installation.php
index 2e4e1c3..f0d2890 100644
--- a/controller/installation.php
+++ b/controller/installation.php
@@ -21,7 +21,17 @@ function installation()
21 // fclose($fichier); 21 // fclose($fichier);
22 // chmod('.htaccess', 0666); // mettre 0644 en production 22 // chmod('.htaccess', 0666); // mettre 0644 en production
23 } 23 }
24 24
25 // extensions de php
26 // nécessité de 'dom' à confirmer
27 $extensions = ['imagick', 'gd', 'zip', 'mbstring', 'dom'];
28 foreach($extensions as $extension)
29 {
30 if(!extension_loaded($extension))
31 {
32 echo("l'extension " . $extension . ' est manquante<br>');
33 }
34 }
25 35
26 // dans le cas de l'utilisation d'une base de données, le fichiers zip devrait contenir un "dump" (un fichier .sql), 36 // dans le cas de l'utilisation d'une base de données, le fichiers zip devrait contenir un "dump" (un fichier .sql),
27 // à voir si php est capable d'obtenir ou redonner ce fichier à la BDD 37 // à voir si php est capable d'obtenir ou redonner ce fichier à la BDD
diff --git a/model/Image.php b/model/Image.php
index f0bb390..d77cfb1 100644
--- a/model/Image.php
+++ b/model/Image.php
@@ -12,15 +12,17 @@ class Image
12 public $path; 12 public $path;
13 public $pathMini; 13 public $pathMini;
14 public $FileName; // après sécurisation 14 public $FileName; // après sécurisation
15 public $permissions;
15 public $width; 16 public $width;
16 public $pathInfos; 17 public $pathInfos;
17 public $erreur; 18 public $erreur;
18 19
19 public function __construct(string $page, string $folder, bool $ajax) 20 public function __construct(string $page, string $folder, bool $ajax, int $permissions = 0666)
20 { 21 {
21 $this->ajax = $ajax; 22 $this->ajax = $ajax;
22 $this->page = $page; 23 $this->page = $page;
23 $this->folder = $folder; 24 $this->folder = $folder;
25 $this->permissions = $permissions;
24 $this->path = 'data/' . $this->folder . '/images/'; 26 $this->path = 'data/' . $this->folder . '/images/';
25 $this->pathMini = 'data/' . $this->folder . '/images-mini/'; 27 $this->pathMini = 'data/' . $this->folder . '/images-mini/';
26 } 28 }
@@ -59,7 +61,7 @@ class Image
59 if (in_array($extension, $extautorisées)) 61 if (in_array($extension, $extautorisées))
60 { 62 {
61 move_uploaded_file($_FILES['upload']['tmp_name'], $this->path . $this->FileName); 63 move_uploaded_file($_FILES['upload']['tmp_name'], $this->path . $this->FileName);
62 chmod($this->path . $this->FileName, 0666); 64 chmod($this->path . $this->FileName, $this->permissions);
63 } 65 }
64 else 66 else
65 { 67 {
@@ -95,9 +97,11 @@ class Image
95 // 0 signifie qu'on conserve les proportions 97 // 0 signifie qu'on conserve les proportions
96 $Image->thumbnailImage($this->width, 0); 98 $Image->thumbnailImage($this->width, 0);
97 } 99 }
98 100
99 // écriture dans un fichier 101 // écriture dans un fichier
100 $Image->writeImage($this->pathMini . $this->pathInfos['filename'] . '-mini.' . $this->pathInfos['extension']); 102 $nomMiniImage = $this->pathMini . $this->pathInfos['filename'] . '-mini.' . $this->pathInfos['extension'];
103 $Image->writeImage($nomMiniImage);
104 chmod($nomMiniImage, $this->permissions);
101 } 105 }
102 elseif($imageLibrary == 'gd') 106 elseif($imageLibrary == 'gd')
103 { 107 {
@@ -124,6 +128,7 @@ class Image
124 { 128 {
125 imagejpeg($source, $nomMiniImage); 129 imagejpeg($source, $nomMiniImage);
126 } 130 }
131 chmod($nomMiniImage, $this->permissions);
127 } 132 }
128 else 133 else
129 { 134 {
diff --git a/à faire après livraison.txt b/à faire après livraison.txt
index ddbfc67..a69aa68 100644
--- a/à faire après livraison.txt
+++ b/à faire après livraison.txt
@@ -9,6 +9,8 @@ tester filtre caractère ^
9améliorer Image::makeThumbnail() pour que gd gère toutes les extensions 9améliorer Image::makeThumbnail() pour que gd gère toutes les extensions
10bug probable si upload d'image bmp ou tiff 10bug probable si upload d'image bmp ou tiff
11 11
12pages albums: montrer la pochette à côté du titre
13
12problème lorsque deux images ont le même nom 14problème lorsque deux images ont le même nom
13 15
14problème lorsqu'on télécharge la même image en tant que pochette d'un album et dans le HTML, cause: les dimensions des deux miniatures crées sont censées être différents, hors l'une écrase l'autre 16problème lorsqu'on télécharge la même image en tant que pochette d'un album et dans le HTML, cause: les dimensions des deux miniatures crées sont censées être différents, hors l'une écrase l'autre