Upload de fichier presque fonctionnel (presk...) [PHP] - PHP - Programmation
Marsh Posté le 05-08-2006 à 20:06:04
Tu as des tests qui me font un peu peur comme celui de la ligne 8, et tu as oublier un champ à la ligne 45
Voici un tutorial : http://www.phpfrance.com/tutoriaux [...] e-fichiers
Ca devrait t'aider.
Marsh Posté le 06-08-2006 à 15:45:32
AlphaZone a écrit : Tu as des tests qui me font un peu peur comme celui de la ligne 8, et tu as oublier un champ à la ligne 45 |
Merci pour ta réponse.
J'ai rajouté </fieldset>, le champs label (c'était ça qui manquait ).
J'ai aussi remplacé le
if ($_POST['upload'])
par
if (isset($_POST['upload'])).
Mais ça ne change rien...
Je crois que je vais carrément reprendre depuis le début, en faisant autrement.
EDIT : code modifié dans le premier message
Marsh Posté le 06-08-2006 à 16:05:40
Donzeky a écrit : |
Non c'est un champ de type hidden qui te permet de fixé la taille max des fichiers envoyés.
Marsh Posté le 06-08-2006 à 18:14:02
Mais le fait de spécifier la taille max par :
Code :
|
ne suffit pas
Ou bien c'est moins "conseillé" ?
Marsh Posté le 06-08-2006 à 18:54:54
Et non, malheureusement cela ne suffit pas. Je pense que tu as compris que je parlais du champ hidden nommé MAX_FILE_SIZE.
Voici un article très intéressant, je pense que cela devrait t'aidé dans la compréhension : http://www.nexen.net/index.php?opt [...] method.php
Extrait de la partie concerné :
Citation : Le champs caché MAX_FILE_SIZE (mesuré en octets) doit précédé le champ input de type file et sa valeur représente la taille maximale acceptée du fichier. Ceci est considéré comme un conseil pour le navigateur, bien que PHP l'utilise également. Il est très facile de contourner cette restriction. Ne comptez pas sur le respect de cette configuration par le navigateur! La configuration de PHP sur la taille maximale à respecter ( upload_max_filesize ) ne peut être contournée, elle. Vous devez ajouter la variable MAX_FILE_SIZE à votre formulaire dans tous les cas car il prévient le chargement de gros fichiers qui demanderait un long délai d'attente au client et ainsi fera échouer le script. |
Autre précision sur ton code :
Code :
|
Tu devrais faire cela SI et SEULEMENT SI tu es sûr qu'un fichier a été uploadé, sinon cela risque d'afficher des messages d'erreur sur ta page. C'est un peu gênant pour le visiteur et peut-être un plus pour un pirate de passage
Marsh Posté le 06-08-2006 à 19:30:04
AlphaZone a écrit :
|
Pour cela j'avais mis :
Code :
|
Mais après, est-ce suffisant pour la sécurité... de toute façon je lis les liens que tu m'as donnés et meme plus, et teste diférentes méthodes
Marsh Posté le 07-08-2006 à 07:20:43
Justement niveau sécurité ce n'est pas au top, tu vérifi simplement que le formulaire a été envoyé or tu ne sais pas si ton champ fichier a été saisi.
Il faut que tu vérifi si le champ fichier a été défini et qu'il n'est pas vide : if(isset() && !empty(...))
Marsh Posté le 07-08-2006 à 10:27:05
il suffit de verifier la taille du tableau $_FILES
au passage, il vaut mieux eviter de tester sur le bouton submit , il me semble que si on se sert de entrer pour valider le formulaire la variable n'est pas passé ( sous IE 6 )
le pluis propre est d'utiliser un champ hidden pour checker si on est passer par le formulaire ou pas
Marsh Posté le 05-08-2006 à 19:37:34
Bonsoir,
voilà je tente de créer un formulaire qui permette l'envoi d'images .jpg ou .jpeg uniquement, ne dépassant pas les 50Ko, avec affichage des erreurs en cas de non-respect de ces règles ou envoi de formulaire vide.
Il marchait correctement jusqu'à ce que je rajoute un elseif pour la taille maxi.
Maintenant, il repère correctement une taille trop élevée et un format d'image interdit, mais m'interdit également aussi l'upload de .jpg et .jpeg
J'ai beau chercher, je ne vois pas d'où vient l'erreur.
Alors... merci d'avance à qui trouvera le pb (je précise que je débute en php )
Voici mon code :
Message édité par Donzeky le 06-08-2006 à 15:46:25