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 :

Erreur d'utilisation de fonction de gestion de fichiers


Sujet :

Langage PHP

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Erreur d'utilisation de fonction de gestion de fichiers
    Bonjour,

    Je souhaite réaliser un petit site en php qui permet d'uploader des fichiers (word, pdf, open office) depuis un formulaire vers un dossier de mon hébergement.

    Voici le code que j'utilise :

    -> pour le formulaire
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <form method="POST" action="upload.php" enctype="multipart/form-data"> 
    <!-- On limite le fichier à 100Ko --> 
    <input type="hidden" name="MAX_FILE_SIZE" value="100000"> 
    Fichier : <input type="file" name="avatar"> 
    <input type="submit" name="envoyer" value="Envoyer le fichier"> 
    </form>

    -> pour l'interprétation du formulaire
    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
    <?php 
    $dossier = '../rapportdestage/rapport'; 
    $fichier = basename($_FILES['avatar']['name']); 
    $taille_maxi = 100000; 
    $taille = filesize($_FILES['avatar']['tmp_name']); 
    $extensions = array('png', 'gif', 'jpg', 'jpeg'); 
    $extension = strrchr($_FILES['avatar']['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(!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['avatar']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné... 
    { 
    echo 'Upload effectué avec succès !'; 
    } 
    else //Sinon (la fonction renvoie FALSE). 
    { 
    echo 'Echec de l\'upload !'; 
    } 
    } 
    else 
    { 
    echo $erreur; 
    } 
    ?>

    Mon code ne fonctionne pas, en effet, j'ai toujours des erreurs prévues par le code. Ex : le format de fichier n'est pas le bon...

    Je ne vois pas ou se trouvent mes erreurs.

    Merci

    Moi59

  2. #2
    Membre éprouvé Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Points : 952
    Points
    952
    Par défaut
    Bonjour,

    Dans ton introduction tu parles de l'envoi de fichier word ,...

    Or dans le script php que tu nous présentes, il y a une liste d'extensions autorisé lors de l'envoi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $extensions = array('png', 'gif', 'jpg', 'jpeg'); 
    $extension = strrchr($_FILES['avatar']['name'], '.'); 
    //Début des vérifications de sécurité... 
    if(!in_array($extension, $extensions))
    De plus vérifier un fichier par son extension est une bonne chose mais pas un moyen sur à 100%. Il faudrait que tu te penches sur le type MIME du fichier
    Pierre
    1. Dans le manuel ( PHP, MySQL,..., rayez la mention inutile), tu te plongeras à deux fois plutôt qu'aucune.
    2. Dans la doc php, tu liras attentivement les sections Chaines de caractères, Tableaux et Système de fichiers
    3. Un code rapide c'est bien, un code maintenable c'est mieux
    ...

    Why was the font tag an orphan ? Because it didn't have a font-family.

  3. #3
    Membre habitué Avatar de Azazel.fr
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    170
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 170
    Points : 196
    Points
    196
    Par défaut
    "bonjour,
    je viens de réaliser un garage spécial moto, mais je n'arrive pas à rentrer mon semi-remorque dedans...
    quelqu'un a une idée ?
    Pourtant j'ai bien récupéré des plans d'architectes qui trainaient sur le net !"

    c'est pas le toup de copier du code ; il faut le lire et le comprendre...

Discussions similaires

  1. Réponses: 2
    Dernier message: 04/06/2008, 12h50
  2. Comment utiliser les fonctions d'un autre fichier?
    Par zuzuu dans le forum Général Python
    Réponses: 8
    Dernier message: 14/12/2006, 18h22
  3. Utiliser des fonctions contenues dans un fichier .bas
    Par usbeck dans le forum Visual C++
    Réponses: 4
    Dernier message: 11/08/2006, 12h03
  4. Réponses: 6
    Dernier message: 22/05/2006, 13h54
  5. Fonctions de gestion de fichiers
    Par sebduth dans le forum Fortran
    Réponses: 4
    Dernier message: 22/08/2005, 10h38

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