UPLOAD D'IMAGE !

Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 - 8 août 2006 à 02:13
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

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
ok merci
MarcLaurentHarnist Messages postés 4 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 20 mars 2010
20 mars 2010 à 12:46
Avec ce script ce n'est pas possible, il faudrait le perfectinner.

Il existe un code php pour uploader plusieurs images en même temps. Dotclear le permet dans son gestionnaire de média.
cs_smart16 Messages postés 5 Date d'inscription samedi 20 mars 2010 Statut Membre Dernière intervention 27 mars 2010
20 mars 2010 à 12:41
bonjour rour le monde,
est-ce que c'est possible d'uploader plusieurs images en même temps ???
MarcLaurentHarnist Messages postés 4 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 20 mars 2010
2 févr. 2010 à 07:46
Bonjour Jakkes,

C'est très simple, la seconde image écrase la première et prend sa place.
C'est pour cela qu'on utilise le timestamp pour être sûr de donner un autre nom.

Mais tu peux créer un fichier php sans timestamp justement, afin d'utiliser l'écrasement pour remplacer une image qui ne te plaît pas.

Ainsi, tu peux te créer toi-même un vrai gestionnaire d'image (ou gestionnaire de médias) avec plusieurs options:
- rajouter une image
- remplacer une image
- afficher les images

Voilà, cordialement, Marc.

PS: n'utilisez pas
pour les retours à la ligne, mais plutôt:
(pour la validation W3C)

[Mon site: http://creaweb3000.com]
Utilisateur anonyme
1 févr. 2010 à 18:17
salut les programmeurs je me demandais qu'est ce qui se passerait si on upload deux images qui ont le même
nom avec ce script?répondez please
MarcLaurentHarnist Messages postés 4 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 20 mars 2010
28 août 2009 à 19:50
J'ai rajouté un petit code pour empêcher le chargement d'images en format bitmap. (.bmp)
Pour ceux qui voudrait le rajouter.

// On ne veut pas de bmp//
elseif ($_FILES['fichier']['type'] == 'image/bmp')
{
$erreur = 'Le format bitmap (.bmp) n\'est pas accepté. Convertissez-la en jpg, png ou gif avant de l\'envoyer, merci';
}
MarcLaurentHarnist Messages postés 4 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 20 mars 2010
24 août 2009 à 20:24
Bravo Artderue62 pour ce code. J'ai parcouru le web toute l'après-midi pour ne trouver que des codes qui ne fonctionnent pas. Le tien fonctionne très bien, trop même ! Mais après avoir appliqué le verrou de sécurité conseillé par Wizard, tout va bien ! Je te donne une très bonne note. Je vais insérer ce code dans mon annuaire sur Creaweb3000.com où mes visiteurs pourront envoyer un logo ou une bannière de leur site.
golant Messages postés 6 Date d'inscription mercredi 27 décembre 2006 Statut Membre Dernière intervention 28 octobre 2009
17 mai 2009 à 16:21
L'upload de jpeg depuis Internet Explorer ne fonctionne pas... Que faire ?
Côté sécurité, je vais l'utiliser pour un CMS privé donc nikel pour moi !
Sinon, impeccable ! Exactement ce que je cherchais !
Si vous pouviez m'aider pour ce souci de .jepg sous IE ça serait super ! Merci.
++
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
9 févr. 2009 à 15:46
la verification par extention n'est pas fiable, la preuve en est : elle depend du client.
Chouchille Messages postés 1 Date d'inscription mercredi 20 août 2008 Statut Membre Dernière intervention 9 février 2009
9 févr. 2009 à 15:25
Pour faire fonctionner le script sous IE, il suffit just de faire un var_dump($_FILES); et de recuperer le type retourne par IE.
Au final il suffit de changer le if de la verification du type de fichier par ca :
if ($_FILES['fichier']['type'] != 'image/png' && $_FILES['fichier']['type'] != 'image/x-png' && $_FILES['fichier']['type'] != 'image/jpeg' && $_FILES['fichier']['type'] != 'image/jpg' && $_FILES['fichier']['type'] != 'image/pjpg' && $_FILES['fichier']['type'] != 'image/pjpeg')

et de rajouter les if correspondant pour l'extension du timestamp

Pour LEFTER :
Ton idee de remplacer ses verifications par " $extentsion=substr($_FILES['fichier']['name'],-4); " est bonne mais ne va pas fonctionner pour les .jpeg
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
22 août 2008 à 21:49
djyac, cette source contient de grosses failles.
cs_djyac Messages postés 4 Date d'inscription mercredi 6 février 2008 Statut Membre Dernière intervention 7 juin 2008
7 juin 2008 à 03:33
bravo!!! c'est exactement ce que je cherche. bon continuation
Utilisateur anonyme
22 avril 2008 à 05:26
Comment est-ce que je pourrais avec ce script, limité à une largeur et une hauteur prédéfinie ?

Merci d'avances
code000 Messages postés 4 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 23 janvier 2008
23 janv. 2008 à 01:47
" ...
de meme j'aimerai savoir comment modifier les "extonçions" pour ajouter des icônes genre "icone.ico" par exemple ?"

Pour uploader des icônes on met "image/x-icon" en place de "image/gif" par ex. anisi après modifications on obtient:

==========================================================
// On vérifit le type du fichier
if (
$_FILES['fichier']['type'] != 'image/png' && $_FILES['fichier']['type'] != 'image/jpeg' && $_FILES['fichier']['type'] != 'image/jpg' && $_FILES['fichier']['type'] != 'image/gif' && $_FILES['fichier']['type'] != 'image/x-icon'
)
{
$erreur = 'Le fichier doit être au format *.jpeg, *.jpg, *.ico, *.gif ou *.png .';
}
==========================================================
et just en bas :
==========================================================
// On définit l'extention du fichier puis on le nomme par le timestamp actuel
if ($_FILES['fichier']['type'] == 'image/jpeg')
{ $extention = '.jpeg'; }
if ($_FILES['fichier']['type'] == 'image/jpeg')
{ $extention = '.jpg'; }
if ($_FILES['fichier']['type'] == 'image/png')
{ $extention = '.png'; }
if ($_FILES['fichier']['type'] == 'image/gif')
{ $extention = '.gif'; }
if ($_FILES['fichier']['type'] == 'image/x-icon')
{ $extention = '.ico'; }$nom_fichier time().$extention;
C U ;)
CODE000.
code000 Messages postés 4 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 23 janvier 2008
23 janv. 2008 à 00:00
ZeGamer,
voici une variante qui permet d'afficher l'image une fois uploadée (à mettre à la place de lignes 45.46.47.48.49.50.).

==================================================
// On upload le fichier sur le serveur.
if (move_uploaded_file($_FILES['fichier']['tmp_name'], $repertoire.$nom_fichier))
{
$url = 'http://www.monsite.com/'.$repertoire.''.$nom_fichier.'';
echo '

<center>

Votre image à été uploadée sur le serveur avec succes!

[' . $url . ' '.$nom_fichier.']

[' . $url . ' ' . $url . ']

[' . $url . ' ]

Lien direct:

Lien forum:

[javascript:history.back(1)
Pour uploader une autre image]

Info image:

Nom: '.$nom_fichier.'

Type: '.$_FILES['fichier']['type'].'

Taille (octets): '.$_FILES['fichier']['size'].' octets.

</center>
';
}
==================================================

C U ;)
code000 Messages postés 4 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 23 janvier 2008
22 janv. 2008 à 22:42
salut à tous
C ma première participation sur le réseau codes_source,
je vous cache pas que je le trouve très sympas ..
à propos du script "Uploader vos images", il marche très bien
sauf coté sécurité qui rest à develepper ...
de meme j'aimerai savoir comment modifier les "extonçions" pour ajouter des icons genre "icone.ico" par exemple.
ps: kelkn a dit que "extençion" c'est avec un "s" bhen tout marchai très bien avant de mettre "s" en place de "t" ou bien je me trompe!!
kaizer63 Messages postés 25 Date d'inscription mercredi 18 février 2004 Statut Membre Dernière intervention 22 décembre 2009
24 août 2007 à 01:50
Personellement je l'ai testé sur mon ftp c'est un DEmo 1G OVH et il me dit que l'image a été uploadé et me done l'url le probleme aucune trace de l'image, et cela avec tous les script d'upload d'image que j' ai testé.
Quelqu'un peu m'aider?
White Angels Messages postés 4 Date d'inscription lundi 21 août 2006 Statut Membre Dernière intervention 19 juin 2007
19 juin 2007 à 12:51
N'utiliser pas ce script, je vient de l'essayer on peut uploader des backdoors en les mettant dans des images ^^
gfpl Messages postés 172 Date d'inscription samedi 11 août 2012 Statut Membre Dernière intervention 9 avril 2011
24 avril 2007 à 11:35
et heuu pas de verification ???

genre
if( preg_match('#[\x00-\x1F\x7F-\x9F/\\\\]#', $name_file) )
{/////////////////////////////

je susi pas sur que coter securiter ca le fasse :)
cs_marial Messages postés 13 Date d'inscription jeudi 1 février 2007 Statut Membre Dernière intervention 5 juin 2007
2 févr. 2007 à 08:49
Salut artderue62,
Mon joli code ne fonctionne pas sur Internet Explorer; comment peut-on le tester et le faire fonctionner sur Internet ???
Merci pour vos réponses et suggestions.
ZeGamer Messages postés 3 Date d'inscription mardi 12 octobre 2004 Statut Membre Dernière intervention 23 octobre 2006
23 oct. 2006 à 19:51
erf excusez mon dernier commentaire j'ai confondu avec un autre script dans le genre sur une autres fenetre -_-
ZeGamer Messages postés 3 Date d'inscription mardi 12 octobre 2004 Statut Membre Dernière intervention 23 octobre 2006
23 oct. 2006 à 19:48
hm, est-il possible d'ajouter l'url de l'image uploadée ? j'ai bien essayer mais ca marche pas des masse ^^

Par contre comme BBSEBB certaines images ne passe pas (ce sont pourtant belle est bien des images sans code malveillant)
bbsebb Messages postés 2 Date d'inscription mercredi 22 novembre 2000 Statut Membre Dernière intervention 9 octobre 2006
9 oct. 2006 à 17:49
Les images en format JPG ne marchent pas avec ie mais avec firefox chez moi. Par contre les autres images aucun problème, c'est vraiment bizzard !!!
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
9 août 2006 à 13:56
Comme l'on dit Wizad et Anthomicro le mime type est transmit par le navigateur et non le serveur il est donc facilement falsifiable... mieux vaut faire comme Wizad à dit dans le cas d'une image ou en fonction de l'extension dans le cas d'upload de fichiers mixtes... l'extension conditionnant la façon dont est éxécuté le fichier pour apache... .. .

Renommer les fichiers en ajoutant au nom un id créé aléatoirement est un plus non néligeable contre des attaques... ça empeche un pseudo pirate de retrouver son fichier une fois qu'il est uploadé... personnellement quand les fichiers uploadés ne sont pas censés être utilisés de suite je les zip comme ça c'est réglé... .. .

@ tchaOo°
cs_wizad Messages postés 355 Date d'inscription samedi 30 octobre 2004 Statut Membre Dernière intervention 14 avril 2009
9 août 2006 à 09:19
je parlais peu sécuriser au niveau de la détection du type de fichier (et de la gestion). il est trés facile de faire passer par ce script fichier potentielement dangereux (type code malveillant).
lefter Messages postés 63 Date d'inscription lundi 7 juin 2004 Statut Membre Dernière intervention 16 mai 2009
9 août 2006 à 08:32
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.
cs_wizad Messages postés 355 Date d'inscription samedi 30 octobre 2004 Statut Membre Dernière intervention 14 avril 2009
9 août 2006 à 07:08
il me semble que c'est exactement ce que j'ai dit... ou alors suis encore pas bien reveillé.
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
8 août 2006 à 23:00
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 355 Date d'inscription samedi 30 octobre 2004 Statut Membre Dernière intervention 14 avril 2009
8 août 2006 à 07:40
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!'; }
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
8 août 2006 à 02:13
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.
Rejoignez-nous