Mes conditions ne fonctionnent pas... - PHP - Programmation
Marsh Posté le 20-01-2009 à 19:59:47
Dans getExtension, ton split est bizarre, vire les crochets ?
Marsh Posté le 20-01-2009 à 20:22:20
Si j'enlève les crochets, il me mets une erreur quand je lui donne des fichiers.
Marsh Posté le 20-01-2009 à 21:38:59
Il me dit pour tout mes fichiers que ce ne sont pas des fichiers "Pas un fichier".
Marsh Posté le 20-01-2009 à 22:33:04
Ton code est vraiment affreux, mais passons.
Code :
|
Marsh Posté le 20-01-2009 à 22:33:56
ReplyMarsh Posté le 20-01-2009 à 22:44:34
Bouchon2 a écrit : Ton code est vraiment affreux, mais passons.
|
Merci ça fonctionne!!
Pourtant la fonction, c'est celle que mon prof nous a donné en cours..
Marsh Posté le 20-01-2009 à 22:46:43
Ah c'est pour les cours Faut préciser, j'ai failli faire un magnifique post pour expliquer pourquoi se baser uniquement sur l'extension est naze
Marsh Posté le 20-01-2009 à 22:55:08
Ok, je passe vendredi sur ce programme tout entier (4 pages)..
Marsh Posté le 21-01-2009 à 13:03:55
absot77 a écrit : Bah tu peux toujours l'expliquer.. |
- Prends un fichier FICHIER.AVI, renomme-le en FICHIER.TXT, il passera ton test.
A l'inverse, prend un fichier RICHIER.TXT et renomme-le en FICHIER.AVI et il ne passe plus.
(Au passage, je ne suis même pas sûr que ton script gère les majuscules)
Ca suffit comme explication ?
Pour détailler un peu :
Un système comme Linux ne se base pas sur l'extension d'un fichier pour déterminer son type.
De même, au moins sur les vieux MacOS, l'extension (qui n'est pas non plus le déterminant) était sur 4 lettres (*.JPEG).
Du coup, on peut facilement avoir des fichiers texte sans extension, ou avec une extension non significative.
Bref, ne se baser que sur l'extension, ça peut être envisagé dans le cadre d'une application destinée à un usage privé. Mais dès qu'il y a plusieurs utilisateurs et/ou de la sécurité en jeu...
Marsh Posté le 21-01-2009 à 13:14:55
macgawel a écrit : |
Ce n'est qu'un projet de cours en même temps..
Mais oui j'ai compris.
On pourrait faire comment s'il y avait de la sécurité en jeu?
Une autre question, pourquoi quand genre j'execute un programme (fait par moi-même) en corus, ça fonctionne mais pas quand je suis sur mon portable (qui a vista)?
Marsh Posté le 21-01-2009 à 13:30:16
macgawel a écrit : |
Sur mac, du moins jusqu'à MacOS/9 (je ne me rappelle plus si c'est la même chose sur MacOS/X) le déterminant était un code à quatre (ou trois, petit doute) caractères placé en début de fichier et qui déterminaient non pas le type de fichier mais qu'elle application il fallait utiliser pour ouvrir le fichier quand on double cliquait dessus. Par défaut, c'était le code de l'application qui avait servit à créer le fichier qui y était indiqué. A noter que pour obtenir un code libre, il fallait inscrire chaque application créé auprès d'Apple. C'était le seul moyen d'éviter que plusieurs applications se retrouvent avec le même code.
Sur Beos, qui est moins connus, le système d'exploitation détermine le type de fichier en analysant son contenu.
Sous windows, au moins jusqu'à XP, c'est la dernière extension (par exemple "machin.avi.txt" , c'est un fichier texte) est utilisé pour déterminer le type de fichier.
Pour linux, c'est encore plus simple : il ne cherche pas à déterminer le type de fichier. Il ne cherche pas non plus à lier un fichier à une application donné. Peut être que certains explorateurs graphiques déterminent le type de fichier d'une manière ou d'une autre mais en tout cas ça n'est pas en standard dans l'OS.
Vu que l'extension d'un fichier est une des choses les plus facile à modifier, ça n'est clairement pas le meilleur critère pour déterminer le type du fichier. En fait, si tu veux sécurisé ce genre de système, c'est sur le contenu du fichier qu'il faut se baser.
Marsh Posté le 21-01-2009 à 13:39:53
omega2 a écrit : Sous windows, au moins jusqu'à XP, c'est la dernière extension (par exemple "machin.avi.txt" , c'est un fichier texte) est utilisé pour déterminer le type de fichier. |
Ca dépend quand-même du logiciel, certains ne faisant pas confiance à l'extension. Renomme ta vidéo en .txt, Windows Media Player va quand-même réussir à l'ouvrir (y'aura juste une MessageBox désactivable d'avertissement).
Marsh Posté le 21-01-2009 à 14:53:15
Quelque soit l'os, t'auras toujours des logiciels qui acceptent tout sans rien vérifier et d'autres qui seront parano. Ca n'empêche pas l'os d'être idiot (windows) ou un peu plus savant (beos)
PS : "savant" dans le sens "qui a la connaissance" et donc "qui sait reconnaitre".
Marsh Posté le 21-01-2009 à 15:22:54
FlorentG a écrit : |
Je viens juste d'essayer (Windows XP + WMP 9.0).
Ben, si je change un AVI en TXT c'est notepad++ qui l'ouvre.
Soit dit en passant, j'ai des doutes sur ce que tu dis :
Quand j'ouvre un fichier, Windows décide, en fonction de l'extension, du programme à utiliser.
Du coup, à moins d'avoir associé les TXT à WMP (ou d'avoir masqué les extensions des fichiers dont le type est connu ), Windows détermine que le fichier est à ouvrir avec notepad et basta...
Marsh Posté le 21-01-2009 à 15:26:47
macgawel a écrit : Je viens juste d'essayer (Windows XP + WMP 9.0). |
Ca c'est explorer qui gère, pour des raisons évidentes de performance. Mais si tu pars du logiciel, certains font une vraie détection
Marsh Posté le 21-01-2009 à 15:26:50
macgawel a écrit : |
Non mais t'as rien compris
Ouvre ton TXT avec WMP, tu verras que florentg a raison. Effectivement, XP identifie les logiciels à lancer en fonction de l'extension, mais WMP, en revanche, identifie les fichiers selon leur format pour les lire.
EDIT : 3 sec
Marsh Posté le 21-01-2009 à 15:27:58
macgawel > Il veut dire que s'il fait "fichier/ouvrir" dans "Windows Media Player", ce logiciel va vérifier si le fichier est une vidéo valide sans se préoccuper de son extension.
Aucun rapport avec le double clic dans l'explorateur de windows.
EDIT : 11 secondes
Marsh Posté le 21-01-2009 à 15:41:56
Oui, mais là on parlait de l'OS, pas de logiciels...
Et c'était un mauvais exemple :
Sous WMP (toujours 9.0), je viens de demander à ouvrir un fichier AVI renommé en txt. Je confirme (message d'alerte, toussa).
Et puis j'ai essayé avec un vrai fichier texte... Et j'ai le même message, y compris le passage "[WMP] peut lire le fichier" ).
Marsh Posté le 21-01-2009 à 15:48:22
macgawel a écrit : Oui, mais là on parlait de l'OS, pas de logiciels... |
Marsh Posté le 20-01-2009 à 19:55:31
Slt, j'ai un dernier problème, mes conditions ne fonctionnent pas...
Je ne devrais voir que les fichiers au format "txt", "csv" ou "jpg" et il m'affiche tout comme un fichier "avi" ou "png"...
D'où vient le problème svp?