From 1ad47a7ca38e679a50c8dfee004db88b1633d7cf Mon Sep 17 00:00:00 2001 From: polo Date: Sat, 29 Jul 2023 11:25:13 +0200 Subject: tests extensions php, chmod dans Image --- controller/Security.php | 11 +++++++---- controller/installation.php | 12 +++++++++++- model/Image.php | 13 +++++++++---- "\303\240 faire apr\303\250s 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 // filtrer / et \ semble inutile $cibles = [' ', '/', '\\', ':', '*', '?', '<', '>', '|', '=', "'", '`', '"', '%22', '#']; - $chaine = str_replace($cibles, '_', $chaine); + $chaine = str_replace($cibles, '_', $chaine); // nécéssite l'extension mbstring $chaine = mb_strtolower($chaine); return($chaine); // les problèmes avec \ persistent !! // => javascript // malheureusement document.getElementById('upload').files[0].name = chaine; ne marche pas! interdit! - // solution? - // créer une copie du fichier et l'envoyer à la place - // envoyer le nom souhaité au serveur en AJAX puis renommer avec PHP + // javascript ne doit pas pouvoir accéder au système de fichiers + // solutions: + // - au lieu de fournir une chaine (le chemin du fichier), donner un objet à files[0].name + // - créer une copie du fichier et l'envoyer à la place + // - envoyer le fichier en AJAX + // - envoyer le nom du fichier à part puis renommer en PHP } } 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() // fclose($fichier); // chmod('.htaccess', 0666); // mettre 0644 en production } - + + // extensions de php + // nécessité de 'dom' à confirmer + $extensions = ['imagick', 'gd', 'zip', 'mbstring', 'dom']; + foreach($extensions as $extension) + { + if(!extension_loaded($extension)) + { + echo("l'extension " . $extension . ' est manquante
'); + } + } // dans le cas de l'utilisation d'une base de données, le fichiers zip devrait contenir un "dump" (un fichier .sql), // à 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 public $path; public $pathMini; public $FileName; // après sécurisation + public $permissions; public $width; public $pathInfos; public $erreur; - public function __construct(string $page, string $folder, bool $ajax) + public function __construct(string $page, string $folder, bool $ajax, int $permissions = 0666) { $this->ajax = $ajax; $this->page = $page; $this->folder = $folder; + $this->permissions = $permissions; $this->path = 'data/' . $this->folder . '/images/'; $this->pathMini = 'data/' . $this->folder . '/images-mini/'; } @@ -59,7 +61,7 @@ class Image if (in_array($extension, $extautorisées)) { move_uploaded_file($_FILES['upload']['tmp_name'], $this->path . $this->FileName); - chmod($this->path . $this->FileName, 0666); + chmod($this->path . $this->FileName, $this->permissions); } else { @@ -95,9 +97,11 @@ class Image // 0 signifie qu'on conserve les proportions $Image->thumbnailImage($this->width, 0); } - + // écriture dans un fichier - $Image->writeImage($this->pathMini . $this->pathInfos['filename'] . '-mini.' . $this->pathInfos['extension']); + $nomMiniImage = $this->pathMini . $this->pathInfos['filename'] . '-mini.' . $this->pathInfos['extension']; + $Image->writeImage($nomMiniImage); + chmod($nomMiniImage, $this->permissions); } elseif($imageLibrary == 'gd') { @@ -124,6 +128,7 @@ class Image { imagejpeg($source, $nomMiniImage); } + chmod($nomMiniImage, $this->permissions); } else { diff --git "a/\303\240 faire apr\303\250s livraison.txt" "b/\303\240 faire apr\303\250s livraison.txt" index ddbfc67..a69aa68 100644 --- "a/\303\240 faire apr\303\250s livraison.txt" +++ "b/\303\240 faire apr\303\250s livraison.txt" @@ -9,6 +9,8 @@ tester filtre caractère ^ améliorer Image::makeThumbnail() pour que gd gère toutes les extensions bug probable si upload d'image bmp ou tiff +pages albums: montrer la pochette à côté du titre + problème lorsque deux images ont le même nom 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 -- cgit v1.2.3