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

Signaler
Messages postés
2934
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
23 juin 2021
-
Messages postés
2934
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
23 juin 2021
-
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

Messages postés
33031
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 juin 2021
3 579
Je suis étonné que ton script ne te retourne pas un message d'erreur...
Tu as oublié un point virguleà la ligne 37.

Cordialement,
Jordane
Messages postés
2934
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
23 juin 2021
138
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
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.
Messages postés
2934
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
23 juin 2021
138
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é
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.
Messages postés
2934
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
23 juin 2021
138
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
Messages postés
2934
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
23 juin 2021
138
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 ; 
?>