Upload images securise

Soyez le premier à donner votre avis sur cette source.

Snippet vu 14 902 fois - Téléchargée 27 fois

Contenu du snippet

Ce script vous permet d'uploader des images sur votre serveur via le protocole HTTP.
Les extensions autorisées sont à préciser dans un tableau associatif et les caractéristiques maximales de l'image (dimensions hauteur / largeur), répertoire de destination et poids maximal autorisé sont définies grâce à des constantes en entête du script.

Ce script respecte aussi les normes du W3C.

Source / Exemple :


<?php

/************************************************************
	Script realise par Webdeb73
	Le 19/12/2004
	Maj : 27/02/2007
	Licence GNU / GPL
	webmaster@apprendre-php.com
	http://www.apprendre-php.com
	http://www.webmaster-debutant.net
	http://www.hugohamon.com

                                                                                                                          • /
/************************************************************ Definition des constantes / tableaux et variables
                                                                                                                          • /
// Constantes define('TARGET', 'files/'); // Repertoire cible define('MAX_SIZE', 100000); // Taille max en octets du fichier define('WIDTH_MAX', 800); // Largeur max de l'image en pixels define('HEIGHT_MAX', 800); // Hauteur max de l'image en pixels // Tableaux de donnees $tabExt = array('jpg','gif','png','jpeg'); // Extensions autorisees $infosImg = array(); // Variables $extension = null; $message = null; /************************************************************ Creation du repertoire cible si inexistant
                                                                                                                          • /
if( !is_dir(TARGET) ) { if( !mkdir(TARGET, 0700) ) { exit('Erreur : le répertoire cible ne peut-être créé ! Vérifiez que vous diposiez des droits suffisants pour le faire ou créez le manuellement !'); } } /************************************************************ Script d'upload
                                                                                                                          • /
if($_POST) { // On verifie si le champ est rempli if( !empty($_FILES['fichier']['name']) ) { // Recuperation de l'extension du fichier $extension = pathinfo($_FILES['fichier']['name'], PATHINFO_EXTENSION); // On verifie l'extension du fichier if(in_array(strtolower($extension),$tabExt)) { // On recupere les dimensions du fichier $infosImg = getimagesize($_FILES['fichier']['tmp_name']); // On verifie le type de l'image if($infosImg[2] >= 1 && $infosImg[2] <= 14) { // On verifie les dimensions et taille de l'image if(($infosImg[0] <= WIDTH_MAX) && ($infosImg[1] <= HEIGHT_MAX) && (filesize($_FILES['fichier']['tmp_name']) <= MAX_SIZE)) { // Si c'est OK, on teste l'upload if(move_uploaded_file($_FILES['fichier']['tmp_name'], TARGET.$_FILES['fichier']['name'])) { // Message de reussite $message = 'Upload réussi !'; } else { // Sinon on affiche une erreur systeme $message = 'Problème lors de l\'upload !'; } } else { // Sinon erreur sur les dimensions et taille de l'image $message = 'Erreur dans les dimensions de l\'image !'; } } else { // Sinon erreur sur les dimensions et taille de l'image $message = 'Le fichier à uploader n\'est pas une image !'; } } else { // Sinon on affiche une erreur pour l'extension $message = 'L\'extension du fichier est incorrecte !'; } } else { // Sinon on affiche une erreur pour le champ vide $message = 'Veuillez remplir le formulaire svp !'; } } /************************************************************ Formulaire XHTML
                                                                                                                          • /
?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" > <head> <title>Upload d'une image sur le serveur !</title> </head> <body> <?php if( !empty($message) ) { echo '<p>',"\n"; echo "\t\t<strong>", htmlspecialchars($message) ,"</strong>\n"; echo "\t</p>\n\n"; } ?> <!-- Debut du formulaire --> <form enctype="multipart/form-data" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post"> <fieldset> <legend>Formulaire</legend> <p> <label for="fichier_a_uploader" title="Recherchez le fichier à uploader !">Envoyer le fichier :</label> <input type="hidden" name="posted" value="1" /> <input type="hidden" name="MAX_FILE_SIZE" value="<?php echo MAX_SIZE; ?>" /> <input name="fichier" type="file" id="fichier_a_uploader" /> <input type="submit" name="submit" value="Uploader" /> </p> </fieldset> </form> <!-- Fin du formulaire --> </body> </html>

A voir également

Ajouter un commentaire

Commentaires

Messages postés
4
Date d'inscription
samedi 23 février 2008
Statut
Membre
Dernière intervention
22 octobre 2008

Désolé je reposte ensuivant car j'ai trouver la reponse c sur que si j'avais chercher un peu plus avant d'ecrire par contre j'ai une question importante comment faire pour ajouter sur ce code l'adresse ou l'image a était uploader sur ma page

merci d'avance amicalement sylvain
Messages postés
4
Date d'inscription
samedi 23 février 2008
Statut
Membre
Dernière intervention
22 octobre 2008

Bonjour,ce code ma creer automatiquement un fichier files que je n'arrive plus a supprimé help
Messages postés
67
Date d'inscription
samedi 3 juin 2006
Statut
Membre
Dernière intervention
29 janvier 2009

en faite le dossier ou sont uploader les images est visible par mes visiteur. c'est un risque ou j'ai rien compris? ^^
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
35
apparement, ici, tu peux envoyer du code php du moment que : l'extention est celle d'une image, et l'entete est bonne
ce qui veut dire qu'il faut une combinaison de deux failles pour que ca soit exploitable, une ici, et une autre pour faire executer le code
Messages postés
67
Date d'inscription
samedi 3 juin 2006
Statut
Membre
Dernière intervention
29 janvier 2009

Salut, avant de l'ajouter sur mon site j'aimerais savoir si les images uploader sont sécuriser? c'est a dire par exemple une fausse image img.bmp(.php?).

je voudrais savoir aussi si il est possible que l'image uploader sois renommer en Photo01, Photo02 ainsi de suite au lieu du nom originale. merci
Afficher les 43 commentaires

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.