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 :

Ajout type mime dans script form upload


Sujet :

Langage PHP

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

    Informations forums :
    Inscription : Mai 2013
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Ajout type mime dans script form upload
    Bonjour à tous,

    Je viens de modifier un petit script d'upload (mp3/wma/wav) et pour plus de sécurité j'ai inséré une vérification du type mime.

    Mon problème est que lorsque je renomme "fichier.php" en "fichier.mp3" le script upload quand même le fichier.

    Je me demande donc d'où vient le problème car la je cherche depuis plusieurs jours.

    Si quelqu'un a une idée, je vous remercie par avance.



    Voici le code :




    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    <?php
     
    $target     = "uploads/";
    $max_size   = 9000000;
    $ip = $_SERVER['REMOTE_ADDR'];
    $ipf = "___[$ip]___";
    $url = "www.radio87.fr___";
    $date = date ("d.m.Y__H.i.s");
    $extensions_ok = array("mp3","wma","wav");
    $type = $_FILES['fichier']['type'];
     
     
    $nom_file   = $_FILES['fichier']['name'];
    $nom_file   = $date .$ipf .$url .$nom_file;
    $taille     = $_FILES['fichier']['size'];
    $tmp        = $_FILES['fichier']['tmp_name'];
    $chemin     = $target;
    $extension  = substr($nom_file,-3);
     
     
    $to      = 'MAIL@MAIL.fr';
    $subject = 'Envoi mp3';
    $headers = 'From: MAIL@MAIL.fr';
    $message = "Nom du fichier : $nom_file \n \n http://www.xxxxxxxxxxxxxxxxxxx/espace_prive/uploads/";
     
     
    if($_POST['posted'])
    {
     
     
      if($nom_file)
      {
     
        if(in_array(strtolower($extension),$extensions_ok))
        {
     
         if($type=='audio/mpeg' || $type=='audio/mp3' || $type=='audio/x-ms-wma' || $type=='audio/x-wav')
         {
     
            if(($taille <= $max_size))
            {
     
                if(move_uploaded_file($tmp,$chemin.$nom_file)) 
                {
     
                    echo '<p>Fichier upload&eacute avec succ&egrave;s !</p>';
                    echo '<ul><li>Nom du fichier : '.$nom_file.'</li>';
                    echo '<li>Taille : '.$_FILES['fichier']['size'].' Octets</li>';
                    echo '<li>Nous venons de recevoir un e-mail. Si le fichier est conforme, il sera diffus&eacute sur R87.</li>';
                    echo '<li><a href="uploads/'.$nom_file.'" target="_blank">Voir le fichier</a></li><br><br>';
                    mail($to, $subject, $message, $headers);
     
                }
                   else
                {
     
                    echo '<p>Probl&egrave;me lors de l\'upload ! <a href="envoyer_une_chronique.php">Retour</a></p>';
     
     
                }
            }
              else
            {
     
              echo '<p>Erreur dans la taille du fichier (taille max : 9 Mo) ! <a href="envoyer_une_chronique.php">Retour</a></p>';
            }
        }
              else
            {
     
              echo '<p>Votre fichier ne comporte pas un format valide ! <a href="envoyer_une_chronique.php">Retour</a></p>';
            }
        }
          else
        {
     
            echo '<p>Votre fichier ne comporte pas une extension valide ! <a href="envoyer_une_chronique.php">Retour</a></p>';
     
        }
       }
        else
       {
     
        echo '<p>Le champ du fichier est vide ! <a href="envoyer_une_chronique.php">Retour</a></p>';
       }
    }
    ?>

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $type = $_FILES['fichier']['type'];
    Cela ne va donner que je "Type apparent" du fichier, qui peut être modifié comme tu l'a fait :
    Par ex., en renommant fichier.php -> fichier.mp3 : le type mime "apparent" est... mp3 ( FAKE !!)

    Il faut s'y prendre autrement, en testant le "type mime réel" du fichier.
    2 méthodes (à vérifier celle qui fonctionne le mieux) :
    1/ utilisant la CLASS finfo
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $finfo 		= new finfo(FILEINFO_MIME_TYPE, NULL);
    $file_MimeType 	= $finfo->file($file_Name);
    2/ alternative, si la CLASS finfo n'est pas supportée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $finfo 		= finfo_open(FILEINFO_MIME_TYPE);
    $file_MimeType 	= finfo_file($finfo, $file_Name);
    finfo_close($finfo);
    By the way... pour l'EXTENSION du fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $file_Extension 	= strtolower(pathinfo($file_Name,PATHINFO_EXTENSION));

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Merci pour cette précision, donc $type = $_FILES['fichier']['type']; est inutile. OK.

    Mais concrètement je le place où ce code pour tester le type mime réel ? (je suis débutant sorry )

  4. #4
    Invité
    Invité(e)
    Par défaut
    Supprime ces 2 lignes :
    $type = $_FILES['fichier']['type'];
    $extension = substr($nom_file,-3);
    Remplace par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    // extension du fichier uploadé (en minuscule)
    $extension  = strtolower(pathinfo($_FILES['fichier']['name'],PATHINFO_EXTENSION));
     
    // Type MIME réel du fichier (IMPORTANT : évite les fichiers NON valides, dont l'extension a été renommée)
    //	$finfo  = new finfo(FILEINFO_MIME_TYPE, NULL); // Retourne le type mime
    //	$type  = $finfo->file($_FILES['fichier']['tmp_name']);
     
    // OU (alternative, si la CLASS finfo n'est pas supportée)
    $finfo  = finfo_open(FILEINFO_MIME_TYPE);
    $type  = finfo_file($finfo, $_FILES['fichier']['tmp_name']);
    finfo_close($finfo);

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    OK! je teste là
    merci !

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Voilà le code modifié mais j'ai une erreur Fatal error: Call to undefined function: finfo_open() in /homez.398/

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    <?php
     
    $target     = "uploads/";
    $max_size   = 9000000;
    $ip = $_SERVER['REMOTE_ADDR'];
    $ipf = "___[$ip]___";
    $url = "www.radio87.fr___";
    $date = date ("d.m.Y__H.i.s");
    $extensions_ok = array("mp3","wma","wav");
     
     
    $nom_file   = $_FILES['fichier']['name'];
    $nom_file   = $date .$ipf .$url .$nom_file;
    $taille     = $_FILES['fichier']['size'];
    $tmp        = $_FILES['fichier']['tmp_name'];
    $chemin     = $target;
    $extension  = strtolower(pathinfo($_FILES['fichier']['name'],PATHINFO_EXTENSION));
    $finfo  = finfo_open(FILEINFO_MIME_TYPE);
    $type  = finfo_file($finfo, $_FILES['fichier']['tmp_name']);
    finfo_close($finfo);
     
     
    $to      = 'MAIL@MAIL.fr';
    $subject = 'Envoi mp3';
    $headers = 'From: MAIL@MAIL.fr';
    $message = "Nom du fichier : $nom_file \n \n http://www.xxxxxxxxxxxxxxxxxxx/espace_prive/uploads/";
     
     
    if($_POST['posted'])
    {
     
     
      if($nom_file)
      {
     
        if(in_array(strtolower($extension),$extensions_ok))
        {
     
         if($type=='audio/mpeg' || $type=='audio/mp3' || $type=='audio/x-ms-wma' || $type=='audio/x-wav')
         {
     
            if(($taille <= $max_size))
            {
     
                if(move_uploaded_file($tmp,$chemin.$nom_file)) 
                {
     
                    echo '<p>Fichier upload&eacute avec succ&egrave;s !</p>';
                    echo '<ul><li>Nom du fichier : '.$nom_file.'</li>';
                    echo '<li>Taille : '.$_FILES['fichier']['size'].' Octets</li>';
                    echo '<li>Nous venons de recevoir un e-mail. Si le fichier est conforme, il sera diffus&eacute sur R87.</li>';
                    echo '<li><a href="uploads/'.$nom_file.'" target="_blank">Voir le fichier</a></li><br><br>';
                    mail($to, $subject, $message, $headers);
     
                }
                   else
                {
     
                    echo '<p>Probl&egrave;me lors de l\'upload ! <a href="envoyer_une_chronique.php">Retour</a></p>';
     
     
                }
            }
              else
            {
     
              echo '<p>Erreur dans la taille du fichier (taille max : 9 Mo) ! <a href="envoyer_une_chronique.php">Retour</a></p>';
            }
        }
              else
            {
     
              echo '<p>Votre fichier ne comporte pas un format valide ! <a href="envoyer_une_chronique.php">Retour</a></p>';
            }
        }
          else
        {
     
            echo '<p>Votre fichier ne comporte pas une extension valide ! <a href="envoyer_une_chronique.php">Retour</a></p>';
     
        }
       }
        else
       {
     
        echo '<p>Le champ du fichier est vide ! <a href="envoyer_une_chronique.php">Retour</a></p>';
       }
    }
    ?>

  7. #7
    Invité
    Invité(e)
    Par défaut
    à lire => Fileinfo

    - vérifie ta config (version de PHP) : <?php echo phpinfo(); ?>
    Pré-requis
    Avant PHP 5.3.0, la bibliothèque magic_open est requise pour bâtir cette extension.
    - essaye l'autre solution

  8. #8
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Merci je vais potasser tout ca!

Discussions similaires

  1. Champ Type NumeroAuto dans un form
    Par nat2814 dans le forum IHM
    Réponses: 4
    Dernier message: 05/03/2009, 19h25
  2. prob as2 / mail php avec type mime x-3w-form-urlencoded
    Par memess dans le forum ActionScript 1 & ActionScript 2
    Réponses: 4
    Dernier message: 12/11/2008, 23h07
  3. choix du type mime dans input de type file
    Par beyo dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 04/01/2008, 18h43
  4. Réponses: 5
    Dernier message: 21/05/2007, 15h31
  5. Réponses: 1
    Dernier message: 25/10/2006, 22h03

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