IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Upload] interdire upload d'une image avec même nom


Sujet :

Langage PHP

  1. #1
    Membre régulier Avatar de camzo
    Homme Profil pro
    ingénieur en documentation
    Inscrit en
    Décembre 2006
    Messages
    168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ingénieur en documentation
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 168
    Points : 101
    Points
    101
    Par défaut [Upload] interdire upload d'une image avec même nom
    bonjour à tous,

    je tente désespérément d'empêcher un upload d'une image qui aurait le même nom qu'une autre déjà présente dans le dossier "photos" (du coup, logo.jpg est remplacé par une image qui a le même nom et que j'ai chargé ultérieurement).

    ET je ne vois pas comment faire malgré les tuto !!!
    Je me doute que c'est une condition mais laquelle et où ?

    voici mon code php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    <?php
    $dossier = 'photos/';
    $fichier = basename($_FILES['mon_image']['name']);
    $taille_maxi = 1000000000;
    $taille = filesize($_FILES['mon_image']['tmp_name']);
    $extensions = array('.png', '.gif', '.jpg', '.jpeg');
    $extension = strrchr($_FILES['mon_image']['name'], '.'); 
     
    $connexion=mysql_connect ('localhost','root','') or die ("impossible de se connecter à la base de données");
    mysql_select_db ('phototheque');
     
    if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
    {
         $erreur = "Vous devez charger un fichier de type png, gif, jpg, jpeg";     
    }
    if($taille>$taille_maxi)
    {
         $erreur = "le fichier est trop gros...";
    }
    if(!isset($erreur))
    {
         $fichier = strtr($fichier, 
              'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 
              'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
         $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
         if(move_uploaded_file($_FILES['mon_image']['tmp_name'], $dossier . $fichier)) 
         {
              echo "succès !";
         }
         else
         {
              echo "échec du chargement !";
         }
    }
    else
    {
         echo $erreur;
    }
     
    mysql_close($connexion);
     
    ?>
    si quelqu'un a une idée voire un superbe lien que j'ai pas encore trouvé...
    merci d'avance

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 7
    Points : 6
    Points
    6
    Par défaut aide
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $name_file = $_FILES['mon_image']['tmp_name'];
    if( file_exists( $dossier.$name_file )) 
    { 
       exit("Un fichier portant le même nom existe déjà sur le serveur"); 
    }
    essaye quelque chose du genre...

  3. #3
    Membre régulier Avatar de camzo
    Homme Profil pro
    ingénieur en documentation
    Inscrit en
    Décembre 2006
    Messages
    168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ingénieur en documentation
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 168
    Points : 101
    Points
    101
    Par défaut
    parfait, parfait, j'ai mis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if (!file_exists ($dossier . $fichier))
    {
     $erreur = "
     déjà là
     ";
    }
    et ça marche, encore merci !!!

  4. #4
    Membre régulier Avatar de camzo
    Homme Profil pro
    ingénieur en documentation
    Inscrit en
    Décembre 2006
    Messages
    168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ingénieur en documentation
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 168
    Points : 101
    Points
    101
    Par défaut
    en fait, ça marche pas : aucun upload passe !!!
    c'est à cause de la nouvelle condition apparrement...
    pourtant mon code paraît bon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    <?php
    $dossier = 'photos/';
    $fichier = basename($_FILES['mon_image']['name']);
    $taille_maxi = 1000000000;
    $taille = filesize($_FILES['mon_image']['tmp_name']);
    $extensions = array('.png', '.gif', '.jpg', '.jpeg');
    $extension = strrchr($_FILES['mon_image']['name'], '.');
     
    $connexion=mysql_connect ('localhost','root','') or die ("impossible de se connecter à la base de données");
    mysql_select_db ('phototheque');
     
    if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
    {
    $erreur = "Vous devez charger un fichier de type png, gif, jpg, jpeg";
    }
    if($taille>$taille_maxi)
    {
    $erreur = "le fichier est trop gros...";
    }
    if (!file_exists ($dossier . $fichier))
    {
     $erreur = "déjà là";
    }
    if(!isset($erreur))
    {
    $fichier = strtr($fichier,
    'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
    'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
    $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
    if(move_uploaded_file($_FILES['mon_image']['tmp_name'], $dossier . $fichier))
    {
    echo "succès !";
    }
    else
    {
    echo "échec du chargement !";
    }
    }
    else
    {
    echo $erreur;
    }
     
    mysql_close($connexion);
     
    ?>
    j'vois vraiment pas là...
    faute de syntaxe? petit oubli?

    merci pour votre aide

  5. #5
    Membre régulier Avatar de camzo
    Homme Profil pro
    ingénieur en documentation
    Inscrit en
    Décembre 2006
    Messages
    168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ingénieur en documentation
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 168
    Points : 101
    Points
    101
    Par défaut
    j'ai essayé en enlevant le ! (je sais, c'est pas top) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (!file_exists ($dossier . $fichier))
    {
    $erreur = "déjà là";
    }
    mais je reviens au point de départ : tout est accepté même une photo avec un nom déjà présent dans la base...

    que faire?

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/03/2012, 15h06
  2. Upload d'une image avec JSF
    Par ghost69 dans le forum JSF
    Réponses: 0
    Dernier message: 20/07/2010, 13h10
  3. [Upload] Problème pour enregistrer une image
    Par mademoizel dans le forum Langage
    Réponses: 1
    Dernier message: 19/03/2008, 17h47
  4. Réponses: 10
    Dernier message: 24/05/2006, 18h28
  5. [Upload] uploader une image avec move_uploades_file
    Par pod1978 dans le forum Langage
    Réponses: 6
    Dernier message: 31/01/2006, 14h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo