UPLOAD D'IMAGE !

Messages postés
1980
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
24 septembre 2012
- - Dernière réponse : cs_smart16
Messages postés
5
Date d'inscription
samedi 20 mars 2010
Statut
Membre
Dernière intervention
27 mars 2010
- 21 mars 2010 à 17:25
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/38983-upload-d-image

Evangun
Messages postés
1980
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
24 septembre 2012
5 -
Salut,
tu devrais mieux indenter ton code, du début à la fin.
Sinon pourquoi définir un champ hidden avec le MAXSIZE, vu que tu le définis en dur de toute façon ?
et renommer le fichier par le timestamp, c'est arbitraire et inutile... si tu veux la date, tu prends un timedate et si tu veux un id unique t'en prends un plus court ou tu renommes en image(2).jpg...
Au fait artderue, est-ce que tu as déjà tapé "upload image" dans le moteur de Code Source ? essaie ;)
ps: extension s'écrit avec un s.
cs_wizad
Messages postés
356
Date d'inscription
samedi 30 octobre 2004
Statut
Membre
Dernière intervention
14 avril 2009
-
peu sécuriser tous ça...

essai d'uploader un fichier .php (par exemple) en le renomant avec l'extension .jpg... tu comprendra les dégats. Essai de faire un test avec cette fonction :
if(!@getimagesize($_FILES['fichier']['tmp_name']))
{ echo 'Vous avez tentez d'uploader un fichier qui n'est pas une image.'; }
else
{ echo 'C'est bon!'; }
cs_Anthomicro
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8 -
Salut,

wizad > ce que tu dis ne fonctionnera pas vu qu'il vérifie le type envoyé par le navigateur.

Par contre ce type peut être modifié (cf site de coucou747) bref y'a une solution : getimagesize() pour vérifier que le fichier est bien une image.

a +
cs_wizad
Messages postés
356
Date d'inscription
samedi 30 octobre 2004
Statut
Membre
Dernière intervention
14 avril 2009
-
il me semble que c'est exactement ce que j'ai dit... ou alors suis encore pas bien reveillé.
lefter
Messages postés
63
Date d'inscription
lundi 7 juin 2004
Statut
Membre
Dernière intervention
16 mai 2009
-
if ($_FILES['fichier']['type'] != 'image/png' && $_FILES['fichier']['type'] != 'image/jpeg' && $_FILES['fichier']['type'] != 'image/jpg' && $_FILES['fichier']['type'] != 'image/gif')
{
$erreur = 'Le fichier doit être au format *.jpeg, *.gif ou *.png .';
}
Je pense que légérement plus clair et rapide:

if (!in_array($_FILES['fichier']['type'],array('image/png','image/jpg','image/gif')){ ....

Ainsi que :

if ($_FILES['fichier']['type'] == 'image/jpeg') { $extention = '.jpg'; }
if ($_FILES['fichier']['type'] == 'image/png') { $extention = '.png'; }
if ($_FILES['fichier']['type'] == 'image/gif') { $extention = '.gif'; }

Remplacer par :

$extentsion=substr($_FILES['fichier']['name'],-4);
// A Imbriquer dans le else du dessus :-)


wizad [peu sécuriser tous ça...] > Il est toujours possible de passé en Https (si l'hébergeur le gère) :-) mais je pense qu'il y a pas problème de sécurité ici.

Peut-être pour un évolution future:
- Gestion des photos et de catégorie
- Gestion des volumes par utilisateur
et bien d'autre ...

Voici quelques idées je pense judicieuse pour une évolution de ton code.