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] Upload en local


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Aube (Champagne Ardenne)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 156
    Par défaut [Upload] Upload en local
    dsl c'est encore moi.

    formulaire avec upload de photo, je me suis largement
    basé sur un tuto du site, j'ai fait la base...
    et ça marche pas.
    le but est de placé la photo dans un dossier précis et de
    mettre seulement le chemin dans la base.

    Q1: je suis en local, si je test l'upload est ce que ça joue ?

    Q2: y a-t-il une boulette dans mon schmilblik?

    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
     
    if(isset($_FILES['photo']))
    {
      // params
      unset($erreur);
      $extensions_ok = array('bmp', 'gif', 'jpg', 'jpeg');
      $taille_max = 25000;
      $dest_dossier = 'C:/.../photo/';
      // vérifications
      if( !in_array( substr(strrchr($_FILES['photo']['name'], '.'), 1), $extensions_ok ) )
      {
        $erreur = 'Pour votre photo veuillez sélectionner un fichier de type bmp, gif ou jpg !';  
      }
      elseif( file_exists($_FILES['photo']['tmp_name']) 
              and filesize($_FILES['photo']['tmp_name']) > $taille_max)
      {
        $erreur = 'Votre fichier doit faire moins de 25Ko !';
      }
      // copie du fichier
      if(!isset($erreur))
      {
        $dest_fichier = basename($_FILES['photo']['name']);
        // formatage nom fichier
        // enlever les accents
        $dest_fichier = strtr($dest_fichier, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
        // remplacer les caracteres autres que lettres, chiffres et point par _
        $dest_fichier = preg_replace('/([^.a-z0-9]+)/i', '_', $dest_fichier);
        // copie du fichier
        move_uploaded_file($_FILES['photo']['tmp_name'], $dest_dossier . $dest_fichier);
        chmod($dest_fichier, 0755);
      }
    }
    dans le même script j'ai un UPDATE
    en bdd qui marche bien avant ça et un header après qui
    fonctionne aussi.

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Citation Envoyé par warwill
    ça ne marche pas
    Mais encore ?

    Citation Envoyé par warwill
    le but est de placé la photo dans un dossier précis et de
    mettre seulement le chemin dans la base
    Cette deuxième partie (liée à la base) n'est pas montrée ici. Est-ce volontaire ?

    Citation Envoyé par warwill
    Q1: je suis en local, si je test l'upload est ce que ça joue ?
    Non, pas par rapport à votre code qui semble ici être portable (respecte la séparation client/serveur).

    Citation Envoyé par warwill
    Q2: y a-t-il une boulette dans mon schmilblik?
    Doit-on chercher quelque chose de particulier ?

    Le résultat de la fonction move_uploaded_file n'est pas testé donc si le déplacement échoue le chmod échouera aussi (ce serait également l'endroit pour procéder à une insertion/mise à jour de votre base). De plus, le chemin fournit à la fonction chmod est incomplet, je pense qu'il devrait être : $dest_dossier . $dest_fichier.

    Dernière chose :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(isset($_FILES['photo']))
    sera toujours vrai même si aucun fichier n'a été sélectionné par l'utilisateur. Il faudrait utiliser le code d'erreur ou tester que les éléments de ce tableau ne sont pas vides pour déterminer l'absence ou non d'une tentative d'upload.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Aube (Champagne Ardenne)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 156
    Par défaut
    ça marche pas = ça upload pas.
    la seconde partie n'est pas encore dans le script
    je veux déjà arriver à uploader avant de rajouter
    le chemin à la base.le dossier final est toujours
    le même, reste le nom de la photo.
    existe t il une fonction type mysqlerror() pour l'upload?
    je fais toujours mes tests moteur en circonstance parfaites
    donc avec le bon type de fichier, la bonne taille...
    je vois la sécurité quand ça marche.
    c'est la dernière partie de l'inscription des users, donc
    en début de script y a juste un UPDATE pour rajouter
    la date de création du profil(qui fonctionne bien lui)
    puis l'upload (qui upload pas)
    et un header pour rediriger vers la page d'accueil.
    j'ai changer le chmod mais ça upload toujours pas.

    EDIT:alors j'ai retirer le header de la fin et je suis
    sur une page blanche comme si il n'y avait pas d'erreur!
    j'ai essayé un echo $_FILES['photo']['error'];
    il me disait undefined index photo

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Citation Envoyé par warwill
    existe t il une fonction type mysqlerror() pour l'upload?
    La fonction move_uploaded_file, si on arrive jusque là, et échoue, affichera un message d'erreur.

    Avez-vous bien ajouté enctype="multipart/form-data" à votre balise form ? Que vous donne var_dump($_FILES); en condition ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Aube (Champagne Ardenne)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 156
    Par défaut
    désolé de tout ce temps,j'étais très occupé.
    donc le enctype est la première chose que
    j'ai vérifié; avant de poster je lis les autre poste
    qui pourrai me concerner et j'avais déjà vu cette
    remarque donc j'ai vérifié.il est ok.

    Que vous donne var_dump($_FILES); en condition ?
    je ne sais pas, mais ça vient surtout du fait que je
    comprend pas la question.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Aube (Champagne Ardenne)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 156
    Par défaut
    j'ai modifié un peu mon script, suite à la lecture
    des autres post sur l'upload.
    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
     
    if(isset($_POST['profil4']))
    {
      // params
      unset($erreur);
      $extensions_ok = array('bmp', 'gif', 'jpg', 'jpeg');
      $taille_max = 25000;
      $dest_dossier = 'C:/.../photo/';
      // vérifications
      if( !in_array( substr(strrchr($_FILES['avatar']['name'], '.'), 1), $extensions_ok ) )
      {
        $erreur = 'Pour votre avatar veuillez sélectionner un fichier de type bmp, gif ou jpg !';  
      }
      elseif( file_exists($_FILES['avatar']['tmp_name'])
              and filesize($_FILES['avatar']['tmp_name']) > $taille_max)
      {
        $erreur = 'Votre fichier doit faire moins de 25Ko !';
      }
      // copie du fichier
      if(!isset($erreur))
      {
        $dest_fichier = basename($_FILES['avatar']['name']);
        // formatage nom fichier
        // enlever les accents
        $dest_fichier = strtr($dest_fichier, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
        // remplacer les caracteres autres que lettres, chiffres et point par _
        $dest_fichier = preg_replace('/([^.a-z0-9]+)/i', '_', $dest_fichier);
        // copie du fichier
        if(move_uploaded_file($_FILES['avatar']['tmp_name'], $dest_dossier . $dest_fichier))
    	{
        chmod($dest_dossier.$dest_fichier, 0755);
    	echo "photo transférer avec succès";
    	}
      }
    }
    else
    {
    echo "le formulaire n'a pas été télécharger";
    }
    et quand je valide j'obtiens plus de renseignement :
    "le formulaire n'a pas été télécharger"

    je ne comprend plus rien! j'ai 4 pages à la suite,toutes
    sur le meme modèle, les 3 premier form font bien leur boulot
    et pas celui la! cela vient-il de mon script? de ma page?

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

Discussions similaires

  1. [Upload] Upload automatique local vers serveur
    Par killerhertz dans le forum Langage
    Réponses: 10
    Dernier message: 21/09/2007, 12h43
  2. [Upload] Upload basique de fichier en local
    Par masseur dans le forum Langage
    Réponses: 2
    Dernier message: 05/06/2007, 19h44
  3. [FTP] upload de fichier local via ftp
    Par fraizz dans le forum Langage
    Réponses: 3
    Dernier message: 10/05/2007, 17h32
  4. [Upload] move_uploaded_file : en local et à distance
    Par dontDeleteMe dans le forum Langage
    Réponses: 2
    Dernier message: 26/04/2007, 15h39
  5. [Upload] Upload d'image en local sous easyphp
    Par camzo dans le forum Langage
    Réponses: 3
    Dernier message: 14/01/2007, 06h03

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