Que pourrais je améliorer sur mon fichier d upload d image

Fermé
flexi2202 Messages postés 3803 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 1 février 2025 - 25 mai 2021 à 18:54
flexi2202 Messages postés 3803 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 1 février 2025 - 26 mai 2021 à 14:47
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

<?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:

5 réponses

jordane45 Messages postés 38430 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 février 2025 4 735
Modifié le 25 mai 2021 à 19:21
Je suis étonné que ton script ne te retourne pas un message d'erreur...
Tu as oublié un point virguleà la ligne 37.

0
flexi2202 Messages postés 3803 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 1 février 2025 187
25 mai 2021 à 19:28
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
0
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.
0
flexi2202 Messages postés 3803 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 1 février 2025 187
26 mai 2021 à 00:12
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é
0
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.
0
flexi2202 Messages postés 3803 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 1 février 2025 187
26 mai 2021 à 13:49
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
flexi2202 Messages postés 3803 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 1 février 2025 187
26 mai 2021 à 14:47
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 
// 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 ; 
?>
0