Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

UN UPLOAD SIMPLE MAIS QUI FONCTIONNE CHEZ FREE


Information sur la source

Catégorie :Divers Classé sous : upload, fichier, envoyer, file, free Niveau : Débutant Date de création : 30/06/2005 Date de mise à jour : 30/06/2005 14:08:52 Vu : 12 185

Note :
6 / 10 - par 5 personnes
6,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (20)
Ajouter un commentaire et/ou une note

Description

Bah que dire de plus tous est dans le titre
 

Source

  • //index.php
  • <form method="post" enctype="multipart/form-data" action="upload.php">
  • <p>
  • <input type="file" name="fichier" size="30">
  • <input type="submit" name="upload" value="Uploader">
  • </p>
  • </form>
  • //upload.php
  • <?php
  • if( isset($_POST['upload']) )
  • {
  • $content_dir = '/avatar'; // dossier où sera déplacé le fichier
  • $tmp_file = $_FILES['fichier']['tmp_name'];
  • if( !is_uploaded_file($tmp_file) )
  • {
  • exit("Le fichier est introuvable");
  • }
  • // on vérifie maintenant l'extension
  • $type_file = $_FILES['fichier']['type'];
  • if( !strstr($type_file, 'jpg') && !strstr($type_file, 'jpeg') && !strstr($type_file, 'bmp') && !strstr($type_file, 'gif') )
  • {
  • exit("Le fichier n'est pas une image");
  • }
  • // on copie le fichier dans le dossier de destination
  • $name_file = $_FILES['fichier']['name'];
  • if( !move_uploaded_file($tmp_file, $content_dir . $name_file) )
  • {
  • exit("Impossible de copier le fichier dans $content_dir");
  • }
  • echo "Le fichier a bien été uploadé";
  • }
  • ?>
//index.php
<form method="post" enctype="multipart/form-data" action="upload.php">
<p>
<input type="file" name="fichier" size="30">
<input type="submit" name="upload" value="Uploader">
</p>
</form>

//upload.php
<?php

if( isset($_POST['upload']) )
{
    $content_dir = '/avatar'; // dossier où sera déplacé le fichier

    $tmp_file = $_FILES['fichier']['tmp_name'];

    if( !is_uploaded_file($tmp_file) )
    {
        exit("Le fichier est introuvable");
    }

    // on vérifie maintenant l'extension
    $type_file = $_FILES['fichier']['type'];

    if( !strstr($type_file, 'jpg') && !strstr($type_file, 'jpeg') && !strstr($type_file, 'bmp') && !strstr($type_file, 'gif') )
    {
        exit("Le fichier n'est pas une image");
    }

    // on copie le fichier dans le dossier de destination
    $name_file = $_FILES['fichier']['name'];

    if( !move_uploaded_file($tmp_file, $content_dir . $name_file) )
    {
        exit("Impossible de copier le fichier dans $content_dir");
    }

    echo "Le fichier a bien été uploadé";
}

?>

Historique

30 juin 2005 14:08:52 :
Correction des fautes ^^

Commentaires et avis

signaler à un administrateur
Commentaire de cladx le 30/06/2005 14:49:35

j'attend vos commentaire plz , je c'est que ce n'est pas une source spectaculaire mais bon je debute

signaler à un administrateur
Commentaire de coucou747 le 30/06/2005 14:54:15

Vas voir ma soure : tuto sécuritée upload...

Cette source est déja présente en plein d'exemplaires différents et tu refais les erreurs des autres programmeurs qui vérifient l'extention !

Tu n'as rien inventé, et tu proposes une faille de sécuritée énorme !

En mettant un name au bouton d'upload, tu surcharge un peu la requette (on n'est pas à quelques octets près...) tu utilises parfois de simples guillemets, parfois des doubles, ce n'est pas super rigoureux...

signaler à un administrateur
Commentaire de cladx le 30/06/2005 15:51:34

que propose tu a la place :p

signaler à un administrateur
Commentaire de coucou747 le 30/06/2005 16:26:51

quand on n'a pas de solution, on va dans le forum, mais on ne poste pas...

je n'ai pas fait de vérifications de types pour les uploads car j'ai toujours considéré que les personnes qui uploadaient étaient des gens sencés (en clair : il faut un mdp pour uploader sur mon site...)

mais j'ai fait un truc pour les reconnaissances d'images pour un album photo :
list($x1, $y1, $type, $n) = getimagesize($f);
$t = array(false, 'GIF','Jpeg','PNG','WBMP');

le type est $t[$type], les dimentions sont ($x1, $y1)

voila, au plaisir de te voir poster une meilleur source la prochaine fois...

signaler à un administrateur
Commentaire de cladx le 30/06/2005 22:16:15

tu a bien raison c'est un source presque entierement pomper sur un tuto prochain couo j'essayerai de ne pas decevoir
:x

signaler à un administrateur
Commentaire de coucou747 le 01/07/2005 11:26:19

merci

signaler à un administrateur
Commentaire de wizard512 le 01/07/2005 11:42:57

mais pour fais 2 fichiers au lieu d'un tu peux tré bien placer Upload.php dans le meme fichier que ton formulaire apré le formulaire et avec les isset() c niquel...

ten pense koi???

signaler à un administrateur
Commentaire de coucou747 le 01/07/2005 11:48:14

c'est un détail, parfois, on préfère faire deux fichiers, ce qui théoriquement est plus rapide d'exécution, mais c'est vrai que pour un site bien complet, c'est assez lourd de programmer dans 200 fichiers...

index.php devrait être remplacé par index.html, si on n'a pas de php, autant l'apeler html pour éviter une étape de parsage...

signaler à un administrateur
Commentaire de wizard512 le 01/07/2005 12:32:57

jsui d'acco a se niveau la coucou747

signaler à un administrateur
Commentaire de MyXiLo le 25/08/2005 18:17:18

(Pour coucou747: Il est evident qu'il faut faire une vérification de l'extension. Personnes censees ou non... Il arrive à tout le monde de faire des erreurs. Je ne vois pas en quoi c'est une faute que de le verifier, au contraire.

En ce qui concerne la source, en effet elle est archi recurrente et peche par sa non rigueur)

signaler à un administrateur
Commentaire de coucou747 le 25/08/2005 19:19:52

un programme PHP peut avoir l'extention .jpg...

une erreur dans l'extention : ici, une simple page html avait l'extention php...

signaler à un administrateur
Commentaire de MyXiLo le 27/08/2005 17:55:29

Admettons que le type envoie un fichier php qui contienne veritablement du php, admettons que l'utilisateur en question puisse ensuite(par une manipulation malhonette ou a cause d'une defaillance du script d'upload) acceder a ce fichier. Le serveur executera le script php en question.

Maintenant si l'individu envoie un fichier jpg avec un contenu php le serveur n'executera pas le contenu en tant que php mais envera le fichier image au client.

En verifiant l'extension le fichier sera peut etre corrompu mais il n'y a pas, a priori, de pb de securité.

C'est du moins ce que je pense.

signaler à un administrateur
Commentaire de coucou747 le 28/08/2005 12:20:04

souvent, t'as des includes dans les sites web (pour inclure des pages web, des plugins...) et donc, on peut inclure un .jpeg dans un .php
include('a.jpeg') et il sera interprété comme un .php

marrant non ?

signaler à un administrateur
Commentaire de MyXiLo le 02/09/2005 01:44:23

Ca implique de pouvoir modifier un script php sur le serveur... Si tu arrives ce genre de choses je ne vois pas l'interet d'inclure un script prealablement uploade.
Par contre un fichier uploade rendu accessible par un script "defaillant", disons, me semble plus a la portee du premier venu.

Bref, tout ca pour dire que la verification de l'extension me semble une bonne chose.

signaler à un administrateur
Commentaire de coucou747 le 02/09/2005 11:59:59

je ne parlais pas de ça :

souvent dans un site, t'as un menu, et t'inclue des pages html (dont t'as retiré le header et le /body /html) pour faire des articles, dans un CMS, t'inclue les plugins, t'inclue un fichier de conf, et parfois, les fichiers inclus sont des variables passés en GET, donc, la, tu changes le GET, et tu fais exécuter ton .jpg, et tu bouzilles le site en entier avec une faille comme ça !

signaler à un administrateur
Commentaire de alainbon le 19/10/2005 20:46:01

1/J'ai testé, ce code ne peut pas marcher tel quel!

Si le dossier dans lequel on veut télécharger les fichiers s'appelle "avatar"

A la ligne 14 du code, il faut remplacer
$content_dir = '/avatar';
par
$content_dir = realpath("avatar").'/';

2/ après cette correction, ça marche, mais bon si un fichier de même nom est déjà présent sur le serveur, ça le remplace. Il serait plus prudent de faire une vérif avec un "file_exists" (cf doc php) pour ne l'écraser qu'après un message de confirmation.

3/Coucou747, tu vas un peu vite ... la faille n'est pas aussi grosse que ton message semble le faire penser.
$_FILES['fichier']['type']  retourne le type MIME du fichier fourni par le navigateur donc le quidam moyen ne pourra pas rentrer par erreur un fichier php ou html avec une extension jpg (j'ai testé avec ce code).
Maintenant pour les hackers, il faudra transformer le type MIME renvoyé par le navigateur. ça je sais pas quel niveau il faut mais ce doit pas être tout à fait débutant (ton avis m'intéresse).

4/(Résumé du 3)
Ce code est suffisant pour éviter les erreurs des visiteurs,  mais pour contrer les hackers non débutants, suivez les conseils de Coucou :
- A priori, selon mes recherches sur le web, on peut faire assez confiance au "getimagesize" (jusqu'à preuve du contraire...)
- Mais pour éviter cette interrogation à laquelle je ne sais répondre : peut-on absolument faire confiance au "getimagesize"?, le plus sûr est de ne permettre l'upload de fichier que dans un espace authentifié.

signaler à un administrateur
Commentaire de ghuysmans99 le 21/05/2006 20:46:25

alors la BRAVO ! 10/10 !
La seule source que j'ai trouvée qui marche !!!

un grand merci

signaler à un administrateur
Commentaire de kun00538 le 10/06/2006 00:05:09

Slt a vous tous

je viens de trouver ce poste je suis a la recherche d'un script d'upload
qui fonctionne depuis au moins 2 jour.

je viens de teste celui ci et je remerci cladx car ce script fonctionne
certe il besoin d'etre adapter au besoin de l'utilisateur mais
il fonction sur ie nestcape et firefox reste a tester sur mozilla linux mais ca
c'est pour bientot.

je suis d'accord avec coucou747 quand a la faille de securite presente mais il suffit
de lire sont tuto et de recup les info de securisation qu'il propose (elle sont vraiment
simple pour faire vite il suffit de controle la hauteur du fichier car seule les img on
une hauteur dixit le tuto de coucou747).

voila c tout merci encore a cladx apres avoir tester au moins 10 source du forum j'ai enfin trouve
ce qu'il me faut

bonne soire a tous

signaler à un administrateur
Commentaire de Gallient le 10/07/2006 10:12:43

Source trouvé ici : http://phpcodeur.net/articles/php/upload/
Héhé

signaler à un administrateur
Commentaire de Metos62 le 17/08/2007 19:29:31

Toujours pratique d'avoir un exemple simple, merci

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Upload de fichier possible sur FREE ??? [ par Phrogg ] Hello, J'utilise un script PHP dans lequel j'utilise l'instruction HTML &lt;input type="file" name="fichier"&gt; Je récupère ensuite le fichier en PHP Upload sur Free [ par bgK ] lorsque j'essaie d'uploader un fichier,j'obtiens le message suivantWarning: Unable to access in upload.php on line 5la ligne 5 de upload.php : $des Problème d'upload de fichier [ par phenixoiseau ] phénixOiseauBonjour,Voilà j'ai écrit un script pour charger un fichier vers un serveur. Lorsque j'execute le script depuis ma machine le chargement du Problème d'upload de fichier [ par phenixoiseau ] phénixOiseauBonjour,Voilà j'ai écrit un script pour charger un fichier vers un serveur. Lorsque j'execute le script depuis ma machine le chargement du Problème d'upload de fichier [ par phenixoiseau ] phénixOiseauBonjour,Voilà j'ai écrit un script pour charger un fichier vers un serveur. Lorsque j'execute le script depuis ma machine le chargement du formulaire "type=file" [ par toxyko_974 ] je voudrais savoir comment fonctionne le formulaire en type=file car en fait je voudrais envoyer un fichier en FTP mais à partir d'un site. La partie exif_imagetype [ par dorian53 ] Bonjour,Je voudrais savoir quel est le type de fichier avant de l'upload.function verifimg($file) { if(exif_imagetype($file)==1 OR exif_imagetype($fil jpbm d'upload d'immge aidez moi svp !! [ par razatajm16 ] bjr alor voici mon pbm en fait , j'ai un script d'upload upload.php3dont voici la source:&lt;?if ($file_name == "none")&nbsp;{&nbsp;print "Sp&#233;cif Erreur Upload [ par Soul EX ] Warning: move_uploaded_file(./photos/evenements/main.jpg): failed to open stream: No such file or directory in /home/users/u/*/www/maj/envoi/evenemen problème upload [ par jipe32 ] Bonjour j'ai téléchargé un script d'upload sur Comscripts.com et je l'ai adapté à mon site, mais j'ai un problème que je n'arrive pas à résoudre. ça s


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,499 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.