Upload: interdire certains types de fichiers [RESOLU]

Upload: interdire certains types de fichiers [RESOLU] - PHP - Programmation

Marsh Posté le 01-03-2006 à 19:05:23    

Bonjour, j'ai un formulaire d'upload et un fichier qui le traite que voici. Je veux interdire certains types de fichier (les fichiers .php, php3, php4 etc...). Chaque fois que j'uploade un fichier il m'annonce qu'il n'est pas d'un type autorisé. Quelqu'un pourrait me dire que mettre à la place de

Code :
  1. // on vérifie maintenant l'extension
  2.     $type_file = $_FILES['fichier']['type'];
  3.     if( !strstr($type_file, 'mp3') && !strstr($type_file, 'txt') )
  4.     {
  5.         exit("Le fichier n'est pas d'un type autorisé." );
  6.     }

pour interdire ces fichiers? merci!
 

Code :
  1. <?php
  2. $user = $HTTP_POST_VARS['user'];
  3. if( isset($_POST['upload']) ) // si formulaire soumis
  4. {
  5.     $content_dir = '../'.$user.'/fichiers/'; // dossier où sera déplacé le fichier
  6.     $tmp_file = $_FILES['fichier']['tmp_name'];
  7.     if( !is_uploaded_file($tmp_file) )
  8.     {
  9.         exit("Le fichier est introuvable" );
  10.     }
  11.     // on vérifie maintenant l'extension
  12.     $type_file = $_FILES['fichier']['type'];
  13.     if( !strstr($type_file, 'mp3') && !strstr($type_file, 'txt') )
  14.     {
  15.         exit("Le fichier n'est pas d'un type autorisé." );
  16.     }
  17.    
  18.     // on copie le fichier dans le dossier de destination
  19.     $name_file = $_FILES['fichier']['name'];
  20.     if( !move_uploaded_file($tmp_file, $content_dir . $name_file) )
  21.     {
  22.         exit("Impossible de copier le fichier dans $content_dir" );
  23.     }
  24.     echo "Le fichier a bien été uploadé";
  25. }
  26. ?>


Message édité par tarte en pion le 02-03-2006 à 17:01:27
Reply

Marsh Posté le 01-03-2006 à 19:05:23   

Reply

Marsh Posté le 01-03-2006 à 19:13:42    

alors pour $_FILES['fichier']['type'] ca te renvoit le type mime du fichier
 
voici une petite liste :
$allowed_types_files = array(
                                        "application/x-gzip-compressed",
                                        "application/x-zip-compressed" ,
                                        "application/x-tar",
                                        "image/bmp",
                                        "image/gif",
                                        "image/pjpeg",
                                        "image/jpeg",
                          "text/richtext",
     "text/plain",
                          "application/pdf",
                                        "application/msword",
);
 
apres tu fais ca :
 
if (!in_array($_FILES['fichier']['type'], $allowed_types))
 die ('type mime incorrect');
 
et voila


---------------
N'oubliez pas de mettre [RESOLU] dans le titre quand c'est fini - Pour poster vos sources : http://paste.clicksources.com/
Reply

Marsh Posté le 01-03-2006 à 19:15:44    

fait gaffe cest pas lextension brut, par exemple pour jpeg cest image/pjpeg
donc fait toi un petit formulaire qui envoie le fichier et qui taffiche la variable pour savoir le type et apres tu pourras verifier les bon types :)
Par contre fait gaffe a ta place je nautoriserait que certaines fichiers et non l'inverse. :)

Reply

Marsh Posté le 01-03-2006 à 19:24:16    

H4rold a raison, c'est un bon point à préciser en sécurité la règle a appliquer c'est :
 
Tout ce qui n'est pas autorisé est interdit
 
Avec mon code c'est ce que je fais, tu vérifie que le type est bien autorisé.
 
++


---------------
N'oubliez pas de mettre [RESOLU] dans le titre quand c'est fini - Pour poster vos sources : http://paste.clicksources.com/
Reply

Marsh Posté le 01-03-2006 à 19:25:29    

newneo2001 a écrit :

H4rold a raison, c'est un bon point à préciser en sécurité la règle a appliquer c'est :
 
Tout ce qui n'est pas autorisé est interdit
 
Avec mon code c'est ce que je fais, tu vérifie que le type est bien autorisé.
 
++


 
toutafait daccord avec toi. Ton codes est niquel en plus :d

Reply

Marsh Posté le 01-03-2006 à 19:29:54    

merci :d


---------------
N'oubliez pas de mettre [RESOLU] dans le titre quand c'est fini - Pour poster vos sources : http://paste.clicksources.com/
Reply

Marsh Posté le 01-03-2006 à 19:39:12    

merci pour votre aide, je vais voir ce que ça donne! :)

Reply

Marsh Posté le 01-03-2006 à 19:52:05    

J'ai mis:

Code :
  1. // on vérifie maintenant l'extension
  2.     $type_file = $_FILES['fichier']['type'];
  3.     $allowed_types_files = array(
  4.            "application/x-gzip-compressed",
  5.            "application/x-zip-compressed" ,
  6.            "image/bmp",
  7.            "image/gif",
  8.            "image/pjpeg",
  9.            "image/jpeg",
  10.            "text/plain",
  11.            "application/pdf",
  12.            "audio/mpeg3",
  13.            "audio/x-mpeg3",
  14.            "audio/mp3",
  15. );
  16. if (!in_array($_FILES['fichier']['type'], $allowed_types))
  17. die ('type mime incorrect');


Mais quand j'uploade un .txt ça me mets le message d'erreur...


Message édité par tarte en pion le 01-03-2006 à 19:52:44
Reply

Marsh Posté le 01-03-2006 à 20:04:16    


 $allowed_types_files et  $allowed_types,
 
met la même variable ;)
 
tout à l'heure je me suis trompé parce que je t'ai copié le code pris de 2 endroits différents dans mes scripts


---------------
N'oubliez pas de mettre [RESOLU] dans le titre quand c'est fini - Pour poster vos sources : http://paste.clicksources.com/
Reply

Marsh Posté le 01-03-2006 à 20:26:50    

impec, merci!

Reply

Marsh Posté le 01-03-2006 à 20:26:50   

Reply

Marsh Posté le 02-03-2006 à 15:06:40    

ca serait bien de mettré [RESOLU] dans le titre quand c'est fait ;)
++


---------------
N'oubliez pas de mettre [RESOLU] dans le titre quand c'est fini - Pour poster vos sources : http://paste.clicksources.com/
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed