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 :

strrchr insensible à la casse et extension non reconnue


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Homme Profil pro
    Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Inscrit en
    Juillet 2006
    Messages
    407
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2006
    Messages : 407
    Par défaut strrchr insensible à la casse et extension non reconnue
    Bonjour

    Dans un formulaire de téléchargement je vérifie les extensions par un script trouvé sur le net.
    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
    $extensions = array('.png', '.gif', '.jpg', '.jpeg', '.tif', '.doc', '.txt', '.mov', '.MOV', '.mp4', '.m4v', '.pdf', '.rtf', '.psd', '.tga');
    $extension = strrchr($_FILES['ne']['name'], '.');
    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, rtf, doc, mov ou mp4...
             ";
    }
    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);
    $emplacement = "./DB_Charte/".$client."/".$fichier;
    if(move_uploaded_file($_FILES['ne']['tmp_name'], "$dossier/$fichier" )) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
    {...
    Mais la fonction strrchr est sensible à la casse, y a t-il un moyen d'avoir une fonction insensible à la casse ou faut-il que j'entre à chaque fois les versions minuscule et majuscule?

    En plus quand j'upload des fichiers avec l’extension .mov celle ci n'est pas reconnue, aucune extension n'est visible par le script.
    alors qu'en JPG ça fonctionne sans problème.
    Je précise que je suis sur un Mac mais que les extensions ne sont pas cachées.

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Par défaut
    Il suffit de faire un strrchr(strtolower()) pour ne pas avoir de problème de casse

    Que l'extension soit caché ou non ça ne change rien, c'est une préférence utilisateur d'affichage dépendante du système d'exploitation.
    Que te renvoie un var_dump($extension ) lorsque tu upload un fichier mov?

  3. #3
    Membre éclairé

    Homme Profil pro
    Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Inscrit en
    Juillet 2006
    Messages
    407
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2006
    Messages : 407
    Par défaut
    bonjour
    quand je fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $extension = strrchr(strtolower($_FILES['ne']['name'], '.'));
    Le var_dump($extension ) me retourne un NULL.
    quelque soit l'extension utilisé

  4. #4
    Membre éclairé

    Homme Profil pro
    Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Inscrit en
    Juillet 2006
    Messages
    407
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2006
    Messages : 407
    Par défaut
    j'ai modifié le code comme cela et cela fonctionne pour le strtolower
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $extension = strrchr($_FILES['ne']['name'], '.');
    $extension=  strtolower($extension);
    Mais pour un fichier video MP4 ou mov le var dump indique string(0) ""

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    tu peux t'inspirer de ceci.

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $extensions = array('png', 'gif', 'jpg', 'jpeg', 'tif', 'doc', 'txt', 'mov', 'mp4', 'm4v', 'pdf', 'rtf', 'psd', 'tga');
    $extension = strtolower(pathinfo($_FILES['ne']['name'],PATHINFO_EXTENSION));
    if(!in_array($extension, $extensions))
    {
    	$erreur = "Vous devez uploader un fichier de type : " . implode(', ', $extensions) . ".";
    }

  6. #6
    Membre éclairé

    Homme Profil pro
    Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Inscrit en
    Juillet 2006
    Messages
    407
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2006
    Messages : 407
    Par défaut
    OK super ça fonctionne.
    merci

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 16/01/2006, 12h28
  2. [EJB] [JSP] Méthode EJB non reconnue dans jsp
    Par stago dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 06/07/2004, 09h52
  3. Creation de table, caractère non reconnu
    Par Missvan dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 17/02/2004, 13h28
  4. xslt_create() non reconnu
    Par BRAUKRIS dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 11/12/2003, 14h43
  5. Tri insensible à la casse [IB7]
    Par patquoi dans le forum Débuter
    Réponses: 4
    Dernier message: 02/06/2003, 08h56

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