AlexandreG Posted February 19, 2020 Share Posted February 19, 2020 (edited) Bonjour tout le monde, J'ai pour mission de développer mon premier module prestashop, tous ce passait bien jusqu'à ce que je doive envoyer une image par le formulaire de configuration du module, pour se faire j'ai donc chercher quelques exemples sur internet, qui ont l'air de marché, car l'image envoyé par se formulaire finit bien dans le dossier img du module. J'ai aussi réussi à récupérer l'url de ce dossier, pour pouvoir afficher l'image, mais voilà mon problème je n'arrive pas à récupérer le nom de l'image + l'extension pour pouvoir la concaténer à l'url du dossier pour l'afficher dans ma balise <img>. La fonction qui permet de créer le champ pour joindre le fichier, qui est appelée dans ma fonction renderForm(): public function displayCatBack($num) { $tab_cat_end = array(); for ($i=1; $i < ($num+1); $i++) { $tab_cat_end[] = array('name' => 'dcea_img_cat_'.$i, 'label' => 'Image à afficher pour la catégorie '.$i.' :', 'type' => 'file'); } return $tab_cat_end; } La fonction postProcess() trouvée sur internet: for ($i=1; $i < (Configuration::get('dcea_nbr_cat')+1) ; $i++) { Configuration::updateValue('dcea_cat_'.$i, 'dcea_cat_'.$i); if (isset($_FILES['dcea_img_cat_'.$i])){ $target_file = dirname(__FILE__).DIRECTORY_SEPARATOR.'img'.DIRECTORY_SEPARATOR.$_FILES['dcea_img_cat_'.$i]["name"]; $uploadOk = 1; $imageFileType = pathinfo($target_file,PATHINFO_EXTENSION); // Check if image file is a actual image or fake image if(isset($_POST["submit_cat"])) { $check = getimagesize($_FILES['dcea_img_cat_'.$i]["tmp_name"]); if($check != false) { echo "File is an image - " . $check["mime"] . "."; $uploadOk = 1; } else { echo "File is not an image."; $uploadOk = 0; } } // Check if file already exists if (file_exists($target_file)) { echo "Sorry, file already exists."; $uploadOk = 0; } // Allow certain file formats if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" && $imageFileType != "gif" ) { echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed."; $uploadOk = 0; } // Check if $uploadOk is set to 0 by an error if ($uploadOk == 0) { echo "Sorry, your file was not uploaded."; } else { if (move_uploaded_file($_FILES['dcea_img_cat_'.$i]["tmp_name"], $target_file)) { echo "The file ". $_FILES['dcea_img_cat_'.$i]["name"]. " has been uploaded."; $file_name = $_FILES['dcea_img_cat_'.$i]["name"]; Configuration::updateValue('dcea_img_cat_'.$i, $file_name); } else { echo "Sorry, there was an error uploading your file."; } } } } Puis ma fonction qui envoie dans le hook les données dont l'image, qui est donc appelée dans hookDisplayHome(): public function getCategoryInfo($id) { $category = new Category(Configuration::get('dcea_cat_'.$id), Context::getContext()->language->id); $name = $category->name; $link = $category->getLink(); $nbr = Configuration::get('dcea_nbr_cat'); $nomImage = Configuration::get('dcea_img_cat_'.$id); $img = $this->context->link->protocol_content.Tools::getMediaServer($nomImage).$this->_path.'img/'.$nomImage; return array('name_cat' => $name, 'link_cat' => $link, 'img_cat' => $img, 'nbr_cat' => $nbr); } Pour résumer, sur le site je récupère juste l'url du dossier donc peut-être que la ligne ci-dessous ne marche pas dans postProcess(), mais pourquoi ? Ou alors il y a un autre problème ? Configuration::updateValue('dcea_img_cat_'.$i, $file_name); Merci pour votre aide. Edited February 19, 2020 by AlexandreG (see edit history) Link to comment Share on other sites More sharing options...
doekia Posted February 19, 2020 Share Posted February 19, 2020 Je ne réponds pas à ta question, mais TOUJOURS filtrer/réécrire le nom du fichier transférer car même si ton code n'accepte que des images, tu ne voudrais pas qu'un hacker remplace l'image d'un produit ou du log par une jolie image porno Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now