pblm upload fichier, interdire certains...

pblm upload fichier, interdire certains... - PHP - Programmation

Marsh Posté le 16-01-2007 à 15:32:33    

ligne 14, dans la partie "in_array", t'ouvres 3 parentaises et tu n'en ferme que deux.
PS : Pense à afficher les erreurs et allerte quand tu développes.

Reply

Marsh Posté le 16-01-2007 à 15:32:33   

Reply

Marsh Posté le 16-01-2007 à 16:04:47    

Autant pour moi, je n'avais pas la fin de la ligne d'affiché.
Au fait, ce que tu veux, c'est que le fichier soit téléchargé si l'une des trois conditions suivante est respecté ou si aucune n'est respecté?
1) nom de fichier non vide
2) fichier existe
3) l'extension du fichier ne fait pas partie d'une liste donné
 
D'aprés ton code tu passes dés que l'une des trois est bonne (utilisation du "OU" : "||" ). Si tu veux exiger que le nom de fichier soit valide selon les trois régles, il faut utiliser un "ET" ( "&&" ).

Reply

Marsh Posté le 16-01-2007 à 16:14:45    

J'ai un doute tout à coup :
est ce que

Code :
  1. !file_exists($fichier) && !in_array(substr(strrchr($fichier_name, '.'),1),$extensions_notOk))


va être considéré comme

Code :
  1. !(file_exists($fichier) && !(in_array(substr(strrchr($fichier_name, '.'),1),$extensions_notOk))))


ou comme

Code :
  1. (!file_exists($fichier)) && (!in_array(substr(strrchr($fichier_name, '.'),1),$extensions_notOk)))


En bref, je me rapelle plus si les ! sont toujours traité avant toujours traité aprés les && ou bien si c'est traité de droite à gauche (ou inversement).
 
Essaye en rajoutant des parentaises. Sinon il faudrait que je teste de chez moi ce soir.

Reply

Marsh Posté le 17-01-2007 à 10:24:45    

Vu le code que t'as choisit de ce que j'ai écrit, c'est normal que ca ne prenne que les .php vu que tu dit entre parentaise "s'il existe et qu'il n'est pas dans la liste" mais t'inverse ensuite cette condition là ce qui donne : "s'il n'existe pas ou qu'il appartient à la liste".
C'est l'autre ensemble de parentaise qu'il aurait fallut prendre pour éviter la double insertion à moins de remplacer le "et" entre parentaise par un "ou" et d'enlever la négation portant sur le test de l'extension.

Reply

Marsh Posté le 17-01-2007 à 10:50:33    

Pour ta derniére question, la doc de php est la référence. :p
Aller je t'aide : make_dir n'existe pas.
A noter que t'aurais eu la réponse plus vite en allant lire la doc. :p

Reply

Marsh Posté le 17-01-2007 à 10:56:19    

J'ai déjà vu il y a quelques années des codes dans des bouquins qui utilisaient une librairie maison fournis sur le cd du bouquin ou sur le site web de l'écrivain ou de l'éditeur.
Il y a aussi des bouquins où le code de certaines pages (numéro de page au pif) utilisent des fonctions inventé/développé quelques chapitres plus tôt.
 
A mon avis c'est le cas pour cette fonction là. ;)

Reply

Marsh Posté le 18-01-2007 à 10:53:10    

La protection utilisée est complètement faillée : on peut très bien mettre du PHP, et changer l'extension :( Pareil pour les .exe... Il vaut mieux tester le type MIME du fichier reçu, là ça sert strictement à rien...


Message édité par FlorentG le 18-01-2007 à 10:53:25
Reply

Marsh Posté le 18-01-2007 à 13:10:01    

$_FILES['ton_fichier']['type']

Reply

Marsh Posté le 18-01-2007 à 14:29:45    

sielfried a écrit :

$_FILES['ton_fichier']['type']


Pas mieux, parce qu'on peut forger une requête à la main avec un autre type :(. Mieux vaut se tourner vers l'extension mimemagic ou un truc comme ça, qui fait ça pour de vrai en testant le contenu du fichier...

Reply

Marsh Posté le 18-01-2007 à 15:00:58    

Ouais, c'est sûr, dépend du niveau de sécurité requis après.
 
Sinon plutôt que mime-magic, je recommande :
http://fr2.php.net/manual/fr/function.finfo-file.php


Message édité par sielfried le 18-01-2007 à 15:01:11

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 18-01-2007 à 15:00:58   

Reply

Sujets relatifs:

Leave a Replay

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