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

flexi2202 Messages postés 3640 Date d'inscription   Statut Membre Dernière intervention   -  
flexi2202 Messages postés 3640 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

<?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;
}
?>

5 réponses

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    Je suis étonné que ton script ne te retourne pas un message d'erreur...
    Tu as oublié un point virguleà la ligne 37.

    0
  2. flexi2202 Messages postés 3640 Date d'inscription   Statut Membre Dernière intervention   190
     
    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
    1. Spirali
       
      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
  3. flexi2202 Messages postés 3640 Date d'inscription   Statut Membre Dernière intervention   190
     
    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
    1. Spirali
       
      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
  4. flexi2202 Messages postés 3640 Date d'inscription   Statut Membre Dernière intervention   190
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. flexi2202 Messages postés 3640 Date d'inscription   Statut Membre Dernière intervention   190
     
    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