[PHP] Upload pour un type de fichier ^^

Fermé
marina26 Messages postés 4 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 22 janvier 2007 - 22 janv. 2007 à 09:54
 komar_666 - 25 févr. 2008 à 20:55
Bonjour a vous,
Voila je travail en ce moment pour un site professionnel et je suis embétée pour restreindre l'upload à un type de fichier.
voila j'ai ceci dans mon code

$type_file = $_FILES['fichier']['type'];

if( !strstr($type_file, 'RAR') )
{
exit("Le fichier ne correspond pas");
}

et a chaque foi que je prend un fichier .rar il m'affiche que le fichier ne correspond pas.
Pourtant pour une image jpeg ce code fonctionne !
Merci d'avance de bien vouloir me donner un petit coup de main.
Sinon bonne journée a vous :)
++
A voir également:

5 réponses

kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
22 janv. 2007 à 11:01
C'est parce que strstr respecte la casse et tu as mis : "RAR" et non "rar", pour le coup ca ne fonctionne pas :)


Mais sinon je te conseil plutot de faire ainsi :
$tab = explode(".",$file);
if ( tab[1] && tab[1] != "rar" ){
     echo "Mauvais fichier";
}


car dans ton exemple si je met le fichier suivante : totorar ca passera alors que ca ne devrait pas.
0
marina26 Messages postés 4 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 22 janvier 2007
22 janv. 2007 à 11:08
flute, en faite j'avais essayé aussi de metre en minuscul mais même si j'écris :
if( !strstr($type_file, 'rar') )
{
exit("Le fichier ne correspond pas");
}

Il m'affice mon message d'erreur.
Peu être que le strstr ne prend pas en compte le rar ?

je vais regarder la seconde solution.
Merci beaucoup pour votre aide ^^.
-1
marina26 Messages postés 4 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 22 janvier 2007
22 janv. 2007 à 11:19
Super merci beaucoup, tout fonctionne à merveille.
( petite parenthèse pour ceux qui débute comme moi, il faut rajouter les $ devant tab )
merci kij ralalala c'est super.

Bonne journée a tous.

Marina
-1
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
22 janv. 2007 à 11:19
Le hic avec la solution que je t'ai proposé (elle fonctionne c'est pas le souvis) c'est que si tu as un fichier nommé de la facon suivante :
"bibi.tutu.rar"
le fichier ne passera pas la validation car tab[1] vaudra "tutu".

Donc petite modification si tu souhaite que ton script soit efficace un maximum, c'est non plus de faire le test sur tab[1] mais sur tab[taille].

Donc comme suit :
$tab = explode('.',$file_name);
$ext = "rar";
$size = count($tab);
if ( tab[size-1] && $tab[size-1] != $ext )
     echo "Mauvais fichier";

-1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
marina26 Messages postés 4 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 22 janvier 2007
22 janv. 2007 à 11:24
Encore mieux Merci beaucoup.

^^

Décidement, on peut en fair des choses en php !!
-1
Salut, j'ai eu le meme probleme que toi, et je viens de decouvrir que dans le $_FILES['upload']['type'] il n'y a pas de rar, pour un fichier rar! Heu oué chelou!!

Pour un fichier rar:
$_FILES['upload']['type'] == application/octet-stream (Ne contiens pas rar)
Donc si tu fais test sur les carateres "rar" ca ne peux pas marcher car ils n'y sont pas!

Pour un fichier zip:
$_FILES['upload']['type'] == application/x-zip-compressed (Contiens zip)
Dans ce cas la ca marche car zip y est!

J'ai donc modifier rar par -->stream

$type_file = $_FILES['upload']['type'];
{
if( !strstr($type_file, 'stream') && !strstr($type_file, 'zip'))
{$erreur = 'only type .rar ou .zip';}................

++ ^^
0