Upload image avec miniature

Soyez le premier à donner votre avis sur cette source.

Snippet vu 11 143 fois - Téléchargée 15 fois

Contenu du snippet

ce script vous permet de télécharger une image et de créer des miniature pour différent extension comme GIF, PNG, JPEG, WBMP et XPM

Source / Exemple :


<!-- formulaire d'upload-->
<form method="post" enctype="multipart/form-data" action="">
	<p>
		<input type="file" name="file" size="30">
		<input type="submit" name="upload" value="Envoyer">
	</p>
</form>

<?php
function getExtension($str) 
{

         $i = strrpos($str,".");
         if (!$i) { return ""; } 
         $l = strlen($str) - $i;
         $ext = substr($str,$i+1,$l);
         return $ext;
}
if(isset($_POST['upload']))
{
	define ("MAX_SIZE",	"400");
	$errors	=	0;
	$filename		=	$_FILES["file"]["name"];
	$uploadedfile 	= 	$_FILES['file']['tmp_name'];
	$type_file 		= $_FILES['file']['type'];
	if ($filename) 
	{
		if( !is_uploaded_file($uploadedfile) )
		{
			exit("Le fichier est introuvable");
		}
		// on vérifie maintenant l'extension
		elseif( !strstr($type_file, 'jpg') && !strstr($type_file, 'jpeg') && !strstr($type_file, 'bmp') && !strstr($type_file, 'gif') )
		{
			exit("Le fichier n'est pas une image");
		}
		else
		{
			
			$size		=	filesize($_FILES['file']['tmp_name']);
			if ($size > MAX_SIZE*1024)
			{
				exit ("verifier la taille de votre image!!");
				$errors=1;
			}
			$extension 	= 	getExtension($filename);
			$extension 	= 	strtolower($extension);
			if($extension=="jpg" || $extension=="jpeg" )
			{
				$uploadedfile 	= 	$_FILES['file']['tmp_name'];
				$src 			= 	imagecreatefromjpeg($uploadedfile);
			}
			else if($extension=="png")
			{
				$uploadedfile 	= 	$_FILES['file']['tmp_name'];
				$src 			= 	imagecreatefrompng($uploadedfile);
			}
			else 
				$src 	= 	imagecreatefromgif($uploadedfile);
			
			list($width,$height)	=	getimagesize($uploadedfile);

			$newwidth	=	60;
			$newheight	=	($height/$width)*$newwidth;
			$tmp		=	imagecreatetruecolor($newwidth,$newheight);

			$newwidth1	=	25;
			$newheight1	=	($height/$width)*$newwidth1;
			$tmp1		=	imagecreatetruecolor($newwidth1,$newheight1);

			imagecopyresampled($tmp, $src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);

			imagecopyresampled($tmp1, $src, 0, 0, 0, 0, $newwidth1, $newheight1, $width, $height);

			$filename 	= 	"". $_FILES['file']['name'];
			$filename1 	= 	"small". $_FILES['file']['name'];

			imagejpeg($tmp,$filename,100);
			imagejpeg($tmp1,$filename1,100);

			imagedestroy($src);
			imagedestroy($tmp);
			imagedestroy($tmp1);
			echo "miniature: <img src='{$filename1}'/><br/><br/>";
			echo "image originale: <img src='{$filename}'/>";
		}
	}
	
}
	
?>

Conclusion :


PHP ne se limite pas à la génération de pages HTML. Il peut aussi servir à créer et manipuler des images, dans un grand choix de formats. Et PHP peut même générer directement des images pour le navigateur, avec la bibliothèque GD.

A voir également

Ajouter un commentaire

Commentaires

Magnifique script il marche a 100%, merci
Qtronik
Messages postés
16
Date d'inscription
samedi 20 novembre 2010
Statut
Membre
Dernière intervention
8 mars 2011

Bonjour,
@Fenoril Connais tu l'information pour ces autres failles ? Je suis curieux de savoir comment encore plus protêger mes upload d'images ou d'autre fichiers.

C'est que mon projet ne doit pas avoir aucune faille alors je prend toute les techniques et les joints ensemble dans une seul et parfaite formule. Ensuite je metterai le code le plus complet ici même pour ma partis de upload d'images.

Merci, et bonne journée ! C'est bcp l'hiver ici au Québec
cs_fenoril
Messages postés
24
Date d'inscription
vendredi 28 mars 2008
Statut
Membre
Dernière intervention
12 juin 2011

beaucoup mieux comme ça... Aisément transformable en fonction ou méthode.

Reste encore un peu de manque de sécurité sur les extensions, mais qtronix et sagat06 on donné deux méthodes qui fonctionnent. Par ailleurs, autre moyen de faire des dégâts : Les caractères de hack (null byte etc...) dans le nom de fichier, mais comme ça prend du temps à mettre en place pour le hacker (car ça dépend de notrer code), c'est moins problématique.

Merci dilar !
cs_fenoril
Messages postés
24
Date d'inscription
vendredi 28 mars 2008
Statut
Membre
Dernière intervention
12 juin 2011

Salut !

@ neige d'hiver, j'ai cessé la liste des erreurs parceque celles trouvées précédemment n'ont pas été corrigée depuis une semaine et que ce code ne peut PAS fonctionner en l'état. Je ne connais pas bien les fonctions d'image de php, j'espérais au passage les découvrir, aussi merci d'avoir relevé cette énormité, car du coup j'ai regardé la doc, et donc effectivement deux sorties écran d'image avant d'imprimer un texte... Je renonce...

@Qtronik Merci pour le lien vers la classe, elle est très instructive.
Qtronik
Messages postés
16
Date d'inscription
samedi 20 novembre 2010
Statut
Membre
Dernière intervention
8 mars 2011

Ici il y a un code simple qui n'est pas un système complet... Pour les systemecomplet il y a d'autre site par exemple siduzero.com...

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.