begin process at 2010 03 20 17:05:30
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > UN UPLOAD SIMPLE MAIS QUI FONCTIONNE CHEZ FREE

UN UPLOAD SIMPLE MAIS QUI FONCTIONNE CHEZ FREE


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
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 :13 101

Auteur : cladx

Ecrire un message privé
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 ^^

 Sources de la même categorie

CALCUL D'UNE DISTANCE ORTHONORMIQUE par bossfoot
Source avec Zip ESPACE ADMIN SIMPLE par mousaid_88
Source avec Zip IMAGINE-CMS V2.20 par djack69
Source avec Zip AFFICHAGE ET GESTION DE DIAPORAMA EN PHP SANS BASE DE DONNÉE... par mldvb
Source avec Zip Source avec une capture PARSER ALLOCINE par cyrhades

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture UTILISATION DU COMPOSANT MULTIPOWUPLOAD par crazygogo
UPLOAD MULTIPLE OU SIMPLE DES FICHIERS par tex73
Source avec Zip Source avec une capture UPLOAD PLUSIEURS FICHIERS EN AJAX + FLASH+PHP par mnouzahir
[PHP5] - CLASSE D'UPLOAD par codefalse
UPLOAD CHEZ FREE QUI MARCHE!! par Nifhell

Commentaires et avis

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

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

Commentaire de cladx le 30/06/2005 15:51:34

que propose tu a la place :p

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

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

Commentaire de coucou747 le 01/07/2005 11:26:19

merci

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

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

Commentaire de wizard512 le 01/07/2005 12:32:57

jsui d'acco a se niveau la coucou747

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)

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

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.

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 ?

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.

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 !

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

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

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

Commentaire de Gallient le 10/07/2006 10:12:43

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

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

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
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 (3)

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