begin process at 2012 02 12 20:01:25
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Graphique

 > UPLOAD D'IMAGE !

UPLOAD D'IMAGE !


 Information sur la source

Note :
7,25 / 10 - par 4 personnes
7,25 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Graphique Classé sous :upload, image Niveau :Débutant Date de création :07/08/2006 Vu :49 430

Auteur : artderue62

Ecrire un message privé
Site perso
Commentaire sur cette source (30)
Ajouter un commentaire et/ou une note

 Description

cest un petit script qui permet de faire un system d'hebergement de photo !

Source

  • <html>
  • <head><title>Uploadez vos images!</title></head>
  • <body>
  • <?php
  • $poids_max = 512000; // Poids max de l'image en octets (1Ko = 1024 octets)
  • $repertoire = 'uploads/'; // Repertoire d'upload
  • if (isset($_FILES['fichier']))
  • {
  • // 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')
  • {
  • $erreur = 'Le fichier doit être au format *.jpeg, *.gif ou *.png .';
  • }
  • // On vérifit le poids de l'image
  • elseif ($_FILES['fichier']['size'] > $poids_max)
  • {
  • $erreur = 'L\'image doit être inférieur à ' . $poids_max/1024 . 'Ko.';
  • }
  • // On vérifit si le répertoire d'upload existe
  • elseif (!file_exists($repertoire))
  • {
  • $erreur = 'Erreur, le dossier d\'upload n\'existe pas.';
  • }
  • // Si il y a une erreur on l'affiche sinon on peut uploader
  • if(isset($erreur))
  • {
  • echo '' . $erreur . '<br><a href="javascript:history.back(1)">Retour</a>';
  • }
  • else
  • {
  • // 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'; }
  • $nom_fichier = time().$extention;
  • // On upload le fichier sur le serveur.
  • if (move_uploaded_file($_FILES['fichier']['tmp_name'], $repertoire.$nom_fichier))
  • {
  • $url = 'www.monsite.com/'.$repertoire.''.$nom_fichier.'';
  • echo 'Votre image à été uploadée sur le serveur avec succes!<br>Voici le lien: <input type="text" value="' . $url . '" size="60">';
  • }
  • else
  • {
  • echo 'L\'image n\'a pas pu être uploadée sur le serveur.';
  • }
  • }
  • }
  • else
  • {
  • ?>
  • <form method="post" enctype="multipart/form-data">
  • <input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $poids_max; ?>">
  • <input type="file" name="fichier">
  • <input type="submit" value="Envoyer">
  • </form>
  • <?php
  • }
  • ?>
<html>
<head><title>Uploadez vos images!</title></head>
<body>

<?php
$poids_max = 512000; // Poids max de l'image en octets (1Ko = 1024 octets)
$repertoire = 'uploads/'; // Repertoire d'upload

if (isset($_FILES['fichier']))
{
   
   // 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')
   {
      $erreur = 'Le fichier doit être au format *.jpeg, *.gif ou *.png .';
   }
   
   // On vérifit le poids de l'image
   elseif ($_FILES['fichier']['size'] > $poids_max)
   {
      $erreur = 'L\'image doit être inférieur à ' . $poids_max/1024 . 'Ko.';
   }
   
   // On vérifit si le répertoire d'upload existe
   elseif (!file_exists($repertoire))
   {
      $erreur = 'Erreur, le dossier d\'upload n\'existe pas.';     
   }
   
   // Si il y a une erreur on l'affiche sinon on peut uploader
   if(isset($erreur))
   {
      echo '' . $erreur . '<br><a href="javascript:history.back(1)">Retour</a>';
   }
   else
   {
         
      // 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'; }
      $nom_fichier = time().$extention;
             
      // On upload le fichier sur le serveur.
      if (move_uploaded_file($_FILES['fichier']['tmp_name'], $repertoire.$nom_fichier))
      {
         $url = 'www.monsite.com/'.$repertoire.''.$nom_fichier.'';
         echo 'Votre image à été uploadée sur le serveur avec succes!<br>Voici le lien: <input type="text" value="' . $url . '" size="60">';
      }
      else
      {
         echo 'L\'image n\'a pas pu être uploadée sur le serveur.';
      }
     
   }
   
}
else
{
   ?>
   <form method="post" enctype="multipart/form-data">
      <input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $poids_max; ?>">
      <input type="file" name="fichier">
      <input type="submit" value="Envoyer">
   </form>
   <?php
}
?>

 Conclusion

bientot + d'infos dessus


 Sources du même auteur

Source avec Zip LIVRE D'OR SIMPLE MES AVEC PLUSIEUR FONCTION

 Sources de la même categorie

Source avec Zip Source avec une capture CAMEMBERT BD par dardelphi
Source avec une capture AMÉLIORATION : CAMEMBERT par asphator
GESTION DE COULEUR par manuche
Source avec Zip NAVIGATOR (+CSSDETECTOR) par xXVoxPopuliXx
COMMENT, AVEC GD, DESSINER UN RECTANGLE TRANSPARENT PLEIN AV... par Rainbow

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture GESTIONNAIRE DE NEWS BASIQUE AVEC UPLOAD D'IMAGES par cod57
Source avec Zip Source avec une capture UPLOADEUR DE FICHIERS MULTIPLES V1 par cod57
UPLOAD IMAGE AVEC MINIATURE par dilar
Source avec Zip FONCTION PHP POUR REDIMENSIONNER UNE IMAGE ET UPLOADER DANS ... par GstJasmin
Source avec Zip UPLOAD DE FICHIER par Shaihuld

Commentaires et avis

Commentaire de Evangun le 08/08/2006 02:13: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.

Commentaire de wizad le 08/08/2006 07:40:50

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!'; }

Commentaire de Anthomicro le 08/08/2006 23:00:10

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 +

Commentaire de wizad le 09/08/2006 07:08:47

il me semble que c'est exactement ce que j'ai dit... ou alors suis encore pas bien reveillé.

Commentaire de lefter le 09/08/2006 08:32:37

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.

Commentaire de wizad le 09/08/2006 09:19:07

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).

Commentaire de kankrelune le 09/08/2006 13:56:53

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°

Commentaire de bbsebb le 09/10/2006 17:49:19

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 !!!

Commentaire de ZeGamer le 23/10/2006 19:48:30

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)

Commentaire de ZeGamer le 23/10/2006 19:51:34

erf excusez mon dernier commentaire j'ai confondu avec un autre script dans le genre sur une autres fenetre -_-

Commentaire de marial le 02/02/2007 08:49:29

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.

Commentaire de gfpl le 24/04/2007 11:35:39

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 :)

Commentaire de White Angels le 19/06/2007 12:51:03

N'utiliser pas ce script, je vient de l'essayer on peut uploader des backdoors en les mettant dans des images ^^

Commentaire de kaizer63 le 24/08/2007 01:50:29

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?

Commentaire de code000 le 22/01/2008 22:42:34

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!!

Commentaire de code000 le 23/01/2008 00:00:29

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 '

<font color="#ffffff"><center><b>

Votre image à été uploadée sur le serveur avec succes!<br>
<a href="' . $url . '">'.$nom_fichier.'</a><br>
<a href="' . $url . '">' . $url . '</a><br><br>
<a href="' . $url . '"><img src="' . $url . '" width="50%" height="50%" title="cliquez pour afficher l\'image en taille réelle." border=0></a><br>


Lien direct:
<input type="text" value="' . $url . '" size="65"><br>
Lien forum:
<input type="text" value="[url=' . $url . '][img]' . $url . '[/img][/url]" size="65"><br>

<a href="javascript:history.back(1)">
Pour uploader une autre image</a><br><br>

Info image:<br>
Nom: '.$nom_fichier.' <br>
Type: '.$_FILES['fichier']['type'].' <br>
Taille (octets): '.$_FILES['fichier']['size'].' octets.<br>

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

C U ;)

Commentaire de code000 le 23/01/2008 01:47:42

" ...
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.

Commentaire de thoanny le 22/04/2008 05:26:30

Comment est-ce que je pourrais avec ce script, limité à une largeur et une hauteur prédéfinie ?

Merci d'avances

Commentaire de djyac le 07/06/2008 03:33:54 10/10

bravo!!! c'est exactement ce que je cherche. bon continuation

Commentaire de coucou747 le 22/08/2008 21:49:02 administrateur CS 1/10

djyac, cette source contient de grosses failles.

Commentaire de Chouchille le 09/02/2009 15:25:57

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

Commentaire de coucou747 le 09/02/2009 15:46:47 administrateur CS

la verification par extention n'est pas fiable, la preuve en est : elle depend du client.

Commentaire de golant le 17/05/2009 16:21:11

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.
++

Commentaire de MarcLaurentHarnist le 24/08/2009 20:24:43 9/10

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.

Commentaire de MarcLaurentHarnist le 28/08/2009 19:50:09

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';
}

Commentaire de jakkes le 01/02/2010 18:17:16

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

Commentaire de MarcLaurentHarnist le 02/02/2010 07:46:00

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 <br> pour les retours à la ligne, mais plutôt: <br /> (pour la validation W3C)

[Mon site: http://creaweb3000.com]

Commentaire de smart16 le 20/03/2010 12:41:10

bonjour rour le monde,
est-ce que c'est possible d'uploader plusieurs images en même temps ???

Commentaire de MarcLaurentHarnist le 20/03/2010 12:46:43

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.

Commentaire de smart16 le 21/03/2010 17:25:53

ok merci

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

upload dans table [ par eax ] salut!je voudrais savoir s'il est possible d'uploader un fichier (une image par exemple) et le stocker dans un champ d'une base de données mysqlje vou Upload d'Image et resize de cette image [ par 4feeling ] je cherche un petit bout de script qui permettrai d'uploader une image jpeg et l'enregistrer dans une taille précise. Par exemple on uploade, et on en upload d'image [ par guikiki ] Bonjour à tous!!!voilà..encore un problème que je n'ai toujours pas réussit à résoudre et ce n'est pas faute d'essayer!!voilà, j'ai fait une page en i Upload image et limitation taille [ par millo ] Je suis entrain de dévellopé un script ou je propose l'upload de photo mais pour des raisons évidentes je souhaite limiter l'espace disque réservé pou upload d'images [ par G_ki_aime_pas_le_php ] Salut à tous!G un petit problème j'essaie d'uploader un fichier et ça fonctionne pas.G TOUT essayé j'en ai marre!Est ce que quelqu'un aurait la soluti afficher les image d'un repertoir et un sous repertoir + upload [ par angelx ] bonjour je voudrais afficher les image d'un reperoire et SOUS Repertoire + faire un uploade sans donner le chemin de l'image en utilisant les image ge Upload :) [ par GuilleW ] Bonjour bonjour,Je souhaite faire un Upload de fichier.pour cela j'ai un image , et je souhaiterai que lorsque l'on click sur cette image, elle lance Upload image .. j'ai cherché mais je ne comprends pas .. :S [ par Hash2o ] Voila, je suis a la recherche d'une solution pour uploader une image sur un serv. J'ai essayé la plus part des solutions proposer sur le site mais je pb de upload [ par filrouge13 ] Bonjour,Petit probl&#232;me de upload et de v&#233;rification de l'existence du fichier.J'ai r&#233;cup&#233;r&#233; ce code sur un forum, il devrait Upload apres Redimension d'une image jpg sous Free [ par MrManchot ] Tout d&#233;ja Bonjour a tous &nbsp;(c'est mon premier poste ici).Je suis d&#233;butant en php, et je n'arrive pas a Uploader apres avoir redimensionn


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,749 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales