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 013 fois - Téléchargée 26 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

Messages postés
129
Date d'inscription
lundi 26 avril 2004
Statut
Membre
Dernière intervention
30 juin 2012

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 :)
Messages postés
233
Date d'inscription
vendredi 2 juillet 2004
Statut
Membre
Dernière intervention
4 janvier 2007

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...
Messages postés
73
Date d'inscription
vendredi 29 août 2003
Statut
Membre
Dernière intervention
22 juin 2007

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 ...
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
36
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.