Fonction d'upload d'un fichier avec filtre sur le type (extension) de fichier

Soyez le premier à donner votre avis sur cette source.

Snippet vu 15 892 fois - Téléchargée 28 fois

Contenu du snippet

Ce bout de code permet de gérer l'upload d'un fichier et permet de filtrer les fichiers à charger suivant leurs extensions.

Source / Exemple :


<?php

/**********************************************************************************

  • FONCTION D'UPLOAD D'UN FICHIER
  • Vous devez obligatoirement nommer le champ INPUT de type FILE <<fichier>>
  • $uploaddir STRING VARIABLE le dossier de destination finale du fichier téléchargé
  • $prefix STRING VARIABLE comment préfixé le fichier chargé
  • $adresseFichierFinal STRING VARIABLE GLOBALE l'adresse relative du fichier sur le serveur
  • @access PUBLIC $adresseFichierFinal
  • @author Amen AMOUZOU, amouzou_amen@yahoo.fr
  • @TODO Filtre sur les fichiers accepté; on pourra refuser ainsi certain type de fichier
                                                                                                                                                                    • /
function upload($uploaddir,$prefix = ""){ GLOBAL $adresseFichierFinal, $nomFichierFinal; Switch($_FILES['fichier']['error']){ case 0: //echo "Le téléchargement est correct vers le dossier temporaire du serveur"; $adresseFichierFinal = $uploaddir.$prefix.$_FILES['fichier']['name']; //On pourra récupérer cette variable et le stocker dans une BD $nomFichierFinal = $prefix.$_FILES['fichier']['name']; //idem //Vérifions que le dossier $uploaddir existe sinon on le crée if (!is_dir($uploaddir)) { if (!@mkdir($uploaddir)) { echo "Erreur lors de la création du dossier 'docs'"; } } //Permettons l'accès complet sur ce dossier: lecture, écriture et suppression @chmod($uploaddir,0777); //Déplaçons le fichier dans le dossier $uploaddir if (move_uploaded_file($_FILES['fichier']['tmp_name'], $adresseFichierFinal)) { // echo " et le fichier a été correctement déplacé ensuite vers le dossier <b>$uploaddir</b>. Adresse complète : $adresseFichierFinal\n"; //print('<PRE>'); // print_r($_FILES); // print('</PRE>'); } else { echo "<br>\nAttaque par upload potentielle. Voici plus d'informations :\n<PRE>"; print_r($_FILES); print("</PRE>"); } break; case 1: echo "Le fichier exède la taille autorisée dans le fichier php.ini du serveur"; break; case 2: echo "Le fichier exède la taille MAX_FILE_SIZE spécifié dans le formulaire"; break; case 3: echo "Le fichier n'a été que partiellement téléchargé"; break; case 4: echo "Aucun fichier n'a été téléchargé."; break; } } /**********************************************
  • Fin de la fonction
                                                                                            • /
?>

Conclusion :


//Un exemple de l'appel de la fonction
if ((isset($_POST["envoi"])) && ($_POST["envoi"] == "form1")) {
$prefix = time()."_"; //Nous pouvons décider de préfixer le nom du fichier par le timestamp. Pour eviter les écrasement de fichjier de même nom
$dossierDestination = "../images/categories/";
upload($dossierDestination,$prefix);
}

A voir également

Ajouter un commentaire Commentaires
GiUsTiNo Messages postés 129 Date d'inscription lundi 26 avril 2004 Statut Membre Dernière intervention 30 juin 2012
7 oct. 2005 à 20:06
Non vous avez pas rien compris, c'est "uopload" et pas "upload", c'est une nouvelle technique :p
Bon ok, je sors et je me tais :)
massacr Messages postés 233 Date d'inscription vendredi 2 juillet 2004 Statut Membre Dernière intervention 4 janvier 2007
5 oct. 2005 à 13:28
Euh, tu trouves pas que c'est un peu bete de marquer ca "Attaque par upload potentielle. Voici plus d'informations" ? Etant donné que si un hacker qui attaque par upload, c'est lui qui aura le message ? Si ton script détectait vraiment les attaques, tu pourrais envoyer ce message au webmaster, mais marquer un message qui peut se déclencher lors d'une erreur banale de transfert, et de toute facon à la mauvaise personne, c'est con...
cs_manouille Messages postés 73 Date d'inscription vendredi 29 août 2003 Statut Membre Dernière intervention 22 juin 2007
5 oct. 2005 à 09:33
Le titre de la source avait l'air interessant, mais très franchement, j'ai rien compris a ta source...
En gros tu fait un dossier d'upload si y'en a pas tu lui donne les droits 777 et ensuite tu claques le fichier dedans....

Moi je dis : Tout ça pour ça ...
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 42
4 oct. 2005 à 21:05
salut

t'as pas de vérification de type de fichier, comment tu peux savoir si ton fichier est ou non dangereux ?

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.