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 test type MIME


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2018
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 76
    Par défaut Erreur test type MIME
    Bonjour

    Pour une appli qui affiche des données sur un fond de carte, j'ai besoin d'autoriser l'utilisateur à télécharger un fichier KML

    Pour la sécurité, je teste le type MIME du fichier téléchargé avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    if ($type_fichier1 != "application/vnd.google-earth.kml+xml")
    {
    	print ("<HR>le fichier téléchargé n'est pas au format KML<HR>");
    	print "veuillez noter le type de fichier indiqué ci-dessous et le signaler à l'administrateur du site<br>";
    	print $type_fichier1;
    	exit;
    }
    Ceci fonctionne bien mais certains utilisateurs signalent une erreur alors que le même fichier fonctionne ailleurs

    le fichier téléchargé n'est pas au format KML veuillez noter le type de fichier indiqué ci-dessous et le signaler à l'administrateur du site
    application/octet-stream
    Je ne vois pas de quoi ça peut venir

    Merci pour vos avis

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 699
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 699
    Par défaut
    vous testez quelle valeur ? le type détecté par votre serveur ou celui envoyé par le navigateur ?
    si cela vient du navigateur, il existe peut-être des navigateurs qui ne connaissent pas ce format. et au final ce genre de test n'est pas de la sécurité mais juste une aide de confort pour l'utilisateur puisque les valeurs envoyées par le client ne sont pas fiables.

  3. #3
    Membre chevronné Avatar de Freudd
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2014
    Messages
    165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2014
    Messages : 165
    Par défaut
    Bonjour dom73,

    Le type MIME application/octet-stream est appliqué aux fichiers dont l'extension n'est pas reconnue par défaut.

    Bien qu'improbable, ce genre de problème peut arriver lorsqu'un fichier a perdu sont extension.

    Je dis improbable, car le type MIME est encodé directement dans les sources du fichier, donc si celui-ci n'est pas reconnue il a plus de chance d'avoir été mal généré ou modifié.

    Dans le doute, pouvez vous demander à vos utilisateurs si le fichier qu'il utilise possède bien l'extension .kml

  4. #4
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2018
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 76
    Par défaut
    Merci pour votre réponse

    Citation Envoyé par Freudd Voir le message
    Dans le doute, pouvez vous demander à vos utilisateurs si le fichier qu'il utilise possède bien l'extension .kml
    Ce qui me pose problème, c'est que les fichiers en question s'ouvrent normalement dans l'appli chez moi et chez la plupart des utilisateurs, ils s'ouvrent normalement aussi sur Google Earth, ils ont bien l'extension .kml, ils semblent donc bien constitués.
    C'est seulement chez quelques utilisateurs qu'ils renvoient le message d'erreur "application/octet-stream" ; je n'ai pas détecté de constantes sur la configuration de ces utilisateurs

  5. #5
    Membre chevronné Avatar de Freudd
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2014
    Messages
    165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2014
    Messages : 165
    Par défaut
    Sinon il y a une autre solution, bien plus longue à mettre en place, mais qui pourrait marcher à tous les coups.

    Le format KML est un dérivé de XML, si le fichier téléchargé renvoie le type mime "application/octet-stream", il faudrait le parser avec DOMDocument et vérifier sa structure pour le valider comme étant un fichier KML valide.

    https://www.php.net/manual/fr/class.domdocument.php

    L'Inconvénient de cette solution, c'est que tu devras étudier les balises autorisées dans KML pour créer ta fonction de validation.

    À voir s'il existe un projet qui a déjà mis c'est techniquement en place.

  6. #6
    Membre éprouvé
    Homme Profil pro
    Webmaster - Développeur/intégrateur web
    Inscrit en
    Septembre 2011
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Webmaster - Développeur/intégrateur web
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2011
    Messages : 210
    Par défaut
    Bonjour,

    Je suppose que les fichiers sont bien testés avec la fonction mime_content_type() ?

    Avez-vous une idée de la proportion des échecs ? si elle est inférieur à 5%, personnellement je me dirigerait vers un problème de fichier côté utilisateur.
    Par exemple, il pourrait s'agir d'un problème de corruption des fichiers lié à la méthode de téléchargement ou de stockage, ce qui serait intéressant c'est de récupérer l'un de ces fichiers et les comparer avec des fichiers qui ne posent pas de problème

  7. #7
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2018
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 76
    Par défaut
    Merci pour votre réponse

    Citation Envoyé par mathieu Voir le message
    vous testez quelle valeur ? le type détecté par votre serveur ou celui envoyé par le navigateur ?
    Je teste à partir des éléments du tableau $_FILES
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $nom_fichier1=$_FILES['croquis']['name'];
    $type_fichier1=$_FILES['croquis']['type'];

Discussions similaires

  1. Script de recherche de type mime
    Par bluecurve dans le forum Modules
    Réponses: 1
    Dernier message: 31/08/2005, 17h36
  2. Associer un type MIME à une extension.
    Par Olivier_ dans le forum Réseau/Web
    Réponses: 6
    Dernier message: 13/03/2005, 14h48
  3. [type MIME] css généré par php -> probleme
    Par prgasp77 dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 23/09/2004, 21h13
  4. [Type MIME] Récupération
    Par Optimus dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 28/06/2004, 11h05
  5. [struts] déterminer le type Mime d'un fichier
    Par k4eve dans le forum Struts 1
    Réponses: 4
    Dernier message: 14/06/2004, 10h28

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