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 :

Envoi de fichier, tester si c'est bien un fichier zip


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 97
    Points : 59
    Points
    59
    Par défaut Envoi de fichier, tester si c'est bien un fichier zip
    Bonjour,

    J'utilise ce formulaire pour envoyer un fichier

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <form method="post" action="" enctype="multipart/form-data">
        <input type="hidden" name="filesend" value="true" />
        <input type="file" name="file" />
        <input type="submit" value="Envoyer" />  
    </form>

    Jusque là, pas de soucis, le fichier est bien envoyé.
    Je veux tester si mon fichier est bien un zip, j'utilise
    le code suivant :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (isset($_FILES['file']) && ($_FILES['file']['type']=='application/x-zip-compressed') {
     //teste des erreurs possible de $_FILES
    }

    Je vérifie avec ce code le type MIME du fichier envoyé avec :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<h4>Type de fichier</h4><p>".$_FILES['file']['type']."</p><hr>";

    Et je n'ai pas chaque fois le même résultat d'un pc
    à l'autre (même navigateur ou non)

    Voici les types MIME que j'ai rencontré :
    application/x-zip-compressed
    application/x-zip
    application/octet-stream
    application/force-download

    Les plus souvent rencontré sont les deux derniers...

    Quelqu’un peut-il m'expliquer pourquoi cela arrive et
    comment remédier au problème (si c'est résolvable)

    Merci,

    Bertrand

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    A priori, il y a plusieurs types MIME pour les fichiers zip :
    Citation Envoyé par http://filext.com/file-extension/ZIP
    Detailed information for file extension ZIP:
    Primary association: Compressed Archive File
    File classification: Archive
    Mime type: application/zip, application/x-zip, application/x-zip-compressed, application/octet-stream, application/x-compress, application/x-compressed, multipart/x-zip
    Du coup, à part tester tous les cas possibles, je vois pas trop...

  3. #3
    Membre confirmé
    Avatar de Nowwis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2009
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2009
    Messages : 406
    Points : 498
    Points
    498
    Par défaut
    Tu peux éventuellement vérifier s'il s'agit d'un zip si tu fais confiance à ce qui arrive...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $file = pathinfo($_FILES['file']['name']);
    $extension = strtolower($file['extension']);
    ça peut toujours être utile :-)

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 97
    Points : 59
    Points
    59
    Par défaut
    Citation Envoyé par Celira Voir le message
    A priori, il y a plusieurs types MIME pour les fichiers zip :

    Du coup, à part tester tous les cas possibles, je vois pas trop...
    C'est ce que je fais en fait mais ce qui me chiffonne, ce sont ces deux là :

    application/octet-stream
    application/force-download

    Bertrand

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 97
    Points : 59
    Points
    59
    Par défaut
    Citation Envoyé par Nowwis Voir le message
    Tu peux éventuellement vérifier s'il s'agit d'un zip si tu fais confiance à ce qui arrive...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $file = pathinfo($_FILES['file']['name']);
    $extension = strtolower($file['extension']);
    ça peut toujours être utile :-)
    Oui, en effet, je vais voir...

    Merci

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 97
    Points : 59
    Points
    59
    Par défaut
    Bonsoir,

    En fait, je constate que les différences viennent des navigateurs...

    Donc, je suppose qu'il n'est pas possible de corriger ce petit soucis...

    Bertrand

  7. #7
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 692
    Points : 20 243
    Points
    20 243
    Par défaut
    Les infos fournit par $_FILES['file']['type'] ne sont absolument pas suffisantes pour vérifier un type de fichier.

    Comme tu as pu le voir ca varie d'un navigateur à l'autre mais surtout c'est modifiable dans le protocole HTTP.
    Concrètement un pirate peux envoyer un .exe et te faire croire que c'est un jpeg sans difficulté.

    Une solution valable est d'utiliser finfo . un exemple

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 97
    Points : 59
    Points
    59
    Par défaut
    Bonjour,

    Merci grunk!!! Excellent..

    Et moi qui pensait être dans le bon avec $_FILES['file']['type']Je teste ça dès que j'ai du temps..

    Bertrand

Discussions similaires

  1. lire des fichiers dont le nom est dans un fichier
    Par homonxa dans le forum Développement de jobs
    Réponses: 1
    Dernier message: 20/01/2010, 14h54
  2. Réponses: 2
    Dernier message: 29/07/2009, 17h33
  3. Tester si un fichier xml est bien formé
    Par med_ellouze dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 22/08/2007, 18h26
  4. Tester si word est bien fermé
    Par dederfred dans le forum Delphi
    Réponses: 4
    Dernier message: 19/11/2006, 17h45
  5. [VBS] Fileexit tester si un fichier est bien deplacé
    Par Corben dans le forum VBScript
    Réponses: 12
    Dernier message: 12/04/2006, 18h17

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