Que pourrais je améliorer sur mon fichier d upload d image
flexi2202
Messages postés
3822
Date d'inscription
Statut
Membre
Dernière intervention
-
flexi2202 Messages postés 3822 Date d'inscription Statut Membre Dernière intervention -
flexi2202 Messages postés 3822 Date d'inscription Statut Membre Dernière intervention -
bonjour a tous
avant toute chose chose un grand merci pour l aide de vous tous a finaliser mon projet
pour l instant je continue avec mes requêtes préparée
je viens de modifier un fichier et cela fonctionne
mais j aurais souhaiter savoir s il y a des choses a modifier
avant toute chose chose un grand merci pour l aide de vous tous a finaliser mon projet
pour l instant je continue avec mes requêtes préparée
je viens de modifier un fichier et cela fonctionne
mais j aurais souhaiter savoir s il y a des choses a modifier
<?php session_start(); error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); $dossier = 'uploads/'; $fichier = basename($_FILES['file']['name']); $taille_maxi = 5000000; $taille = filesize($_FILES['file']['tmp_name']); $extensions = array('.png', '.PNG', '.gif', '.jpg', '.JPG', '.jpeg', '.JPEG'); $extension = strrchr($_FILES['file']['name'], '.'); //Début des vérifications de sécurité... if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau { $erreur = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg, txt ou doc...'; } if($taille>$taille_maxi) { $erreur = 'Le fichier est trop gros...'; } if(file_exists("uploads/" . $_FILES["file"]["name"])){ $erreur = ' L\'image existe déjà.'; } if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload { //On formate le nom du fichier ici... $fichier = strtr($fichier, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy'); $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier); if(move_uploaded_file($_FILES['file']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné.. { echo ' <span style="margin-left:30%;"> <br /> Upload effectué avec succès ! </span>'; include('base.php'); //$req =$bdd->prepare('INSERT INTO galerie_images ( nom_img, nom_min) VALUES ( :nom_img, :nom_min)'); //$req->execute(array( 'nom_img' => $_FILES["file"]["name"], 'nom_min' => $_FILES["file"]["name"] )); $image=$_FILES["file"]["name"] //préparation de la requête et des variables $sql = "INSERT INTO galerie_images ( nom_img, nom_min) VALUES (:nom_img, :nom_min)"; $datas = array(':nom_img'=> $image, ':nom_min'=> $image); //Execution de la requete try{ $requete = $bdd -> prepare($sql) ; $requete->execute($datas) ; }catch(Exception $e){ // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($datas); } } else //Sinon (la fonction renvoie FALSE). { echo 'Echec de l\'upload !'; } } else { echo $erreur; } ?>
A voir également:
- Que pourrais je améliorer sur mon fichier d upload d image
- Fichier bin - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier .dat - Guide
5 réponses
Je suis étonné que ton script ne te retourne pas un message d'erreur...
Tu as oublié un point virguleà la ligne 37.
Tu as oublié un point virguleà la ligne 37.
merci jordane pour la correction
oui en effet et j avais même fait mieux je n avais pas mis la bonne base de donnée et tout c est bien passe , mais bon j ai corrige bien sur
autrement tout semble ok a tes yeux
oui en effet et j avais même fait mieux je n avais pas mis la bonne base de donnée et tout c est bien passe , mais bon j ai corrige bien sur
autrement tout semble ok a tes yeux
Bonsoir flexi2202.
Non, ce n'est pas du tout ok, on ne se fie JAMAIS à l'extension d'un fichier pour en déterminer le type.
Pour moi, il y a aussi un problème lors de la vérification de l'existence d'un fichier de même nom, admettons un fichier se nommant gege_a_la_plage.jpg existe déjà dans ton répertoire, que se passe-t-il si on téléverse un fichier se nommant gégé_à_la_plage.jpg ?
Mieux vaut renommer tous les fichiers directement en gardant tout de même son nom comme information à afficher.
Non, ce n'est pas du tout ok, on ne se fie JAMAIS à l'extension d'un fichier pour en déterminer le type.
Pour moi, il y a aussi un problème lors de la vérification de l'existence d'un fichier de même nom, admettons un fichier se nommant gege_a_la_plage.jpg existe déjà dans ton répertoire, que se passe-t-il si on téléverse un fichier se nommant gégé_à_la_plage.jpg ?
Mieux vaut renommer tous les fichiers directement en gardant tout de même son nom comme information à afficher.
bonsoir Spirali
merci pour ton intervention , mais du coup
comment je pourrais corriger ce défaut?
j ai cherche après des scripts mais sans succès
car par la suite je dois parvenir a l intégrer dans le reste des fichiers
d ailleurs pour ce fichier c est une personne encore plus âgé que moi qui m aidé
merci pour ton intervention , mais du coup
comment je pourrais corriger ce défaut?
j ai cherche après des scripts mais sans succès
car par la suite je dois parvenir a l intégrer dans le reste des fichiers
d ailleurs pour ce fichier c est une personne encore plus âgé que moi qui m aidé
Bonjour.
Les scripts d'exemples d'upload de fichiers, y en a des tonnes sur internet, par exemple 1er lien https://www.w3schools.com/php/php_file_upload.asp
Pour le renommage, cela doit être pareil, je ne connais pas php plus que ça, mais des générateurs de string unique https://duckduckgo.com/?q=php+unique+string&t=hc&va=u&ia=web
Renommage du fichier et enregistrement dans la table de ce nom en gardant quand même en mémoire dans une colonne supplémentaire le nom réel du fichier à titre informatif.
Je ne sais pas comment les autres procèdent, mais c'est ce que je ferais si jamais j'avais à le faire.
Les scripts d'exemples d'upload de fichiers, y en a des tonnes sur internet, par exemple 1er lien https://www.w3schools.com/php/php_file_upload.asp
Pour le renommage, cela doit être pareil, je ne connais pas php plus que ça, mais des générateurs de string unique https://duckduckgo.com/?q=php+unique+string&t=hc&va=u&ia=web
Renommage du fichier et enregistrement dans la table de ce nom en gardant quand même en mémoire dans une colonne supplémentaire le nom réel du fichier à titre informatif.
Je ne sais pas comment les autres procèdent, mais c'est ce que je ferais si jamais j'avais à le faire.
bonjour
merci pour la réponse et les liens mais par exemple pour ce qui est de www.w3schools.com
j en garde des mauvais souvenirs avec notamment une zone membre qui n a jamais fonctionne
maintenant il reste aussi a le faire de façon manuelle ce changement de nom ...
mais c est vrai que dans mon script d upload il manque aussi une barre de progression en plus
donc je vais devoir chercher autre chose
merci pour la réponse et les liens mais par exemple pour ce qui est de www.w3schools.com
j en garde des mauvais souvenirs avec notamment une zone membre qui n a jamais fonctionne
maintenant il reste aussi a le faire de façon manuelle ce changement de nom ...
mais c est vrai que dans mon script d upload il manque aussi une barre de progression en plus
donc je vais devoir chercher autre chose
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
je viens de trouver ce script mais j ai une erreur a la ligne 20
PHP Parse error: syntax error, unexpected ';', expecting ',' or ')' in Standard input code on line 20
et je parviens pas a mettre le doigt dessus
PHP Parse error: syntax error, unexpected ';', expecting ',' or ')' in Standard input code on line 20
et je parviens pas a mettre le doigt dessus
<?php // Inclut le fichier de configuration de la base de données include('dbConfig.php'); $statusMsg = '' ; // Chemin de téléchargement du fichier $targetDir = "uploads /" ; $fileName = basename ( $_FILES [ "fichier" ] [ "nom" ]); $targetFilePath = $targetDir . $fileName ; $fileType = pathinfo ( $targetFilePath , PATHINFO_EXTENSION ); if (isset ( $_POST [ "soumettre"]) &&! empty ( $_FILES [ "file" ] [ "name" ])) { // Autoriser certains formats de fichiers $allowTypes = array ( 'jpg' , 'png' , 'jpeg' , 'gif' , 'pdf ' ); if ( in_array ( $fileType , $allowTypes )) { // Télécharger le fichier sur le serveur if ( move_uploaded_file ( $_FILES [ "file" ] [ "tmp_name" ], $db -> query ( "INSERT into images (file_name, upload_on) VALUES (' . $fileName . ', NOW ())"); if ($insert) { $statusMsg = "Le fichier" . $fileName . "a été téléchargé avec succès." ; } else { $statusMsg = "Le téléchargement du fichier a échoué, veuillez réessayer." ; } } else { $statusMsg = "Désolé, une erreur s'est produite lors de l' importation de votre fichier." ; "Désolé, seuls les fichiers JPG, JPEG, PNG, GIF et PDF sont autorisés à télécharger." ; } } else { $statusMsg = 'Veuillez sélectionner un fichier à télécharger.' ; } // Afficher le message d'état echo $statusMsg ; ?>