diff options
-rw-r--r-- | controller/Security.php | 11 | ||||
-rw-r--r-- | controller/installation.php | 12 | ||||
-rw-r--r-- | model/Image.php | 13 | ||||
-rw-r--r-- | à faire après livraison.txt | 2 |
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 ^ | |||
9 | améliorer Image::makeThumbnail() pour que gd gère toutes les extensions | 9 | améliorer Image::makeThumbnail() pour que gd gère toutes les extensions |
10 | bug probable si upload d'image bmp ou tiff | 10 | bug probable si upload d'image bmp ou tiff |
11 | 11 | ||
12 | pages albums: montrer la pochette à côté du titre | ||
13 | |||
12 | problème lorsque deux images ont le même nom | 14 | problème lorsque deux images ont le même nom |
13 | 15 | ||
14 | problè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 | 16 | problè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 |