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 :

Gestion des doublons


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de monlou
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2010
    Messages : 363
    Par défaut Gestion des doublons
    Bonjour,

    je suis a regarder a rajouter un système de controle de doublons pour les Upload photo de membres pour mon futur site ainsi que les INSERT dans une table MySql

    j'ai déja mis en opération un système de gestion des erreurs et dans celui-ci, ya la fonction preg_repalce qui renomme le fichier suite aux caracteres non désirés mais par contre, ca ne règle pas les doublons de fichiers qui pourrait survenir.

    alors, j'ai vu qu'on peut utiliser 2 manières d'opérer soit:

    1- en renommant chacun des fichiers par des noms aléatoires

    2- soit en les renommant et ajoutant au nom avec la fonction time(0)

    quel est a votre avis la meilleure manière d'opérer pour un site qui contiendrait beaucoup de membres et en tenant compte bien entendu que les fichiers renommés soit aussi renommés dans la table ?

    merci!

  2. #2
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Le mieux à faire est soit :

    -d'exclure tout les doublons en ne prenant pas en compte le nom bien sur mais en testant avec md5_file()

    ou

    -si tu désires désires par exemple laisser la possibilité à 2 users d'upload le meme fichier, alors de renommer à l'upload ces fichiers (doublons ou non) avec une fonction génératrice de nom de fichier basé sur le timestamp actuel

  3. #3
    Membre éclairé Avatar de monlou
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2010
    Messages : 363
    Par défaut
    merci pour ta réponse,

    alors si je comprends bien avec md5_file() ca implique d'exécuter un test dans la table ou dans le répertoire avant de uploader et ensuite renommer

    tandis que en les renommant à l'upload, ces fichiers (doublons ou non) avec une fonction génératrice de nom de fichier basé sur le timestamp actuel me parait mieux puisque ca économise des ressources.

    Puis-je avoir une idée de la syntaxe a utiliser avec rename afin d'ajouter timestamp a rename?

    supposons que mon répertoire est

    $dossier = '--/images/'; et que la variable a uploader est $fichier


    je pourrais utiliser quelque chose du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rename ($_FILES['photo']['tmp_name'], $dossier.$fichier);
    comment je pourrais utiliser timestamp ici ?

  4. #4
    Membre expérimenté
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Janvier 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Janvier 2008
    Messages : 227
    Par défaut
    En suppossant que $dossier = '--/images/'; et que $ext est l'extension du fichier.

    Si l'on reprend le raisonnement de Madfrix, tu peux :

    - basé sur le hash du fichier :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $filenameTarget = md5_file($_FILES['photo']['tmp_name']) 
                                    . '.' . $ext;
     
    if ( !is_file( $dossier . $filenameTarget ) ) {
        // On déplace le fichier temporaire avec move_uploaded_file
        move_uploaded_file($_FILES['photo']['tmp_name'], $filenameTarget);
    }

    Si l'on veut autoriser les doublons, alors, on peut rajouter un temps ou une variable aléatoire (uniqid par ex).

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $filenameTarget = md5_file($_FILES['photo']['tmp_name'])
                                    . '-' . time()
                                    . '.' . $ext;
     
    // On déplace le fichier temporaire avec move_uploaded_file
    move_uploaded_file($_FILES['photo']['tmp_name'], $filenameTarget);

    Voilà en gros les 2 idées... (à tester)


    Cordialement,
    Patouche

  5. #5
    Membre éclairé Avatar de monlou
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2010
    Messages : 363
    Par défaut
    Merci encore une fois pour la reponse

    en poursuivant mes recherches j'avais trouver ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $dossier = 'images/';
    $nouv_nom = time().'.'.pathinfo($_FILES['photo']['name'], PATHINFO_EXTENSION);
    move_uploaded_file($_FILES['photo']['tmp_name'], $dossier.$nouv_nom);
    je n'ai pas encore fais les test mais j'imagine que le resultat sera le meme qu'avec la 2e option sur le post precedent mis a part : md5_file

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $filenameTarget = md5_file($_FILES['photo']['tmp_name'])
                                    . '-' . time()
                                    . '.' . $ext;
     
    // On déplace le fichier temporaire avec move_uploaded_file
    move_uploaded_file($_FILES['photo']['tmp_name'], $filenameTarget);

  6. #6
    Membre expérimenté
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Janvier 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Janvier 2008
    Messages : 227
    Par défaut
    Euh oui, ce que j'ai fait c'est surtout un copier/coller... Mais tu as l'idée

    Ne reste plus qu'à la mettre en pratique

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Gestion des doublons
    Par Arsene12 dans le forum WinDev
    Réponses: 2
    Dernier message: 04/12/2007, 18h21
  2. Requete SQL sous Access : gestion des doublons
    Par mcroz dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 27/02/2007, 16h37
  3. Gestion des doublons
    Par bestall666 dans le forum Access
    Réponses: 9
    Dernier message: 19/02/2007, 16h15
  4. Gestion des doublons et dlookup
    Par bestall666 dans le forum Access
    Réponses: 5
    Dernier message: 14/02/2007, 23h01

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