[PHP] Probleme avec "filesize"

Fermé
AzRaElDGT Messages postés 57 Date d'inscription mercredi 25 juillet 2007 Statut Membre Dernière intervention 25 octobre 2008 - 13 oct. 2007 à 09:55
AzRaElDGT Messages postés 57 Date d'inscription mercredi 25 juillet 2007 Statut Membre Dernière intervention 25 octobre 2008 - 13 oct. 2007 à 13:27
Bonjour,

Alors pour bien comprendre voila mon code:

	//connection a la base
	include("../../includes/connection.php3");

	// Répertoire de stockage
	$rep="../../upload/photo/";
	//verifie la taille et l'extention de l'image
		if (filesize($_FILES['premiere']['tmp_name']) > 1024000)
		{
  			echo'La photo de la résidence est trop grande! Taille limitée à 1 MB!';
			die();
		}			
		// Création du répertoire
				$rep_promo=	$rep."/".$_POST["promo"]."/";
				if(!file_exists($rep_promo))  mkdir($rep_promo, 0755);
				$rep_programme=	$rep_promo."/".$_POST["programme"]."/";
				if(!file_exists($rep_programme))  mkdir($rep_programme, 0755);
		// upload de la photo
				if($_FILES['premiere']['size'] >0) {
				$savefile = $rep_programme.$_POST["lot"]."_photo".".jpg";
				(move_uploaded_file($_FILES['premiere']['tmp_name'],$savefile));
		//Rédimentionement de la photo	
			$filename = $savefile;
   			$dst_w = 800;
			$dst_h = 600;
		// Lit les dimensions de l'image
   			$size = GetImageSize($savefile);  
   			$src_w = $size[0]; 
			$src_h = $size[1];
   		// Teste les dimensions tenant dans la zone
   			$test_h = round(($dst_w / $src_w) * $src_h);
   			$test_w = round(($dst_h / $src_h) * $src_w);
		// Si Height final non précisé (0)
   			if(!$dst_h) $dst_h = $test_h;
		// Sinon si Width final non précisé (0)
   			elseif(!$dst_w) $dst_w = $test_w;
	        // Sinon teste quel redimensionnement tient dans la zone
   			elseif($test_h>$dst_h) $dst_w = $test_w;
   			else $dst_h = $test_h;
			list($width, $height) = getimagesize($filename);
		// Redimensionnement
			$image_p = imagecreatetruecolor($dst_w, $dst_h);
			$image = imagecreatefromjpeg($filename);
			imagecopyresampled($image_p, $image, 0, 0, 0, 0, $dst_w, $dst_h, $width, $height);
			imagejpeg($image_p, $savefile, 100);


En résumé ce code:

Verfis la taille du fichier, si il est superieur a 50 Kb = "Erreur"

Créé sous dossier sur mon serveur dans le dossier "upload" portant le nom de la variable: $_POST["promo"].
Puis dans ce sous dossier recréé un sous dossier portant le nom de la variable: $_POST["programme"].

Envois le fichier image sur mon serveur dans le sous dossier portant le nom de la variable: $_POST["programme"].
Renome le fichier image: $_POST["lot"]."_photo".".jpg"; (donc l'image envoier doit etre obligatoirement du JPG).

Si la résolution de fichers images dépace les 800 pixel en largeur OU 600 pixel en hauteur, alors elle seront redimentioné, mais de façon proportionel afin de ne pas déformer l'image.

Remplace la photo envoié par l'utilisateur par la photo redimentionné.

Ce code marche tres bien!!! Sauf ca:

Verfis la taille du fichier, si il est superieur a 50 Kb= "Erreur"

	//verifie la taille et l'extention de l'image
		if (filesize($_FILES['premiere']['tmp_name']) > 51200)
		{
  			echo'La photo de la résidence est trop grande! Taille limitée à 50 Kb!';
			die();
		}		


Si mon utilisateur envois un fichier de 600 Kb pas de probleme ca marche! Mais si il envois un fichier 2Mo ca marche pas!!(pas de message d'erreur que ce soit celui de mon code ou venant du serveur...).

2eme j'aurais preferer avoir un message d'erreur java script du genre:

<SCRIPT LANGUAGE="JavaScript">
alert('Ici, c\'est votre message!\nSympa non ?');
</SCRIPT>


Mais j'arrive pas l'inserer...

3 eme je veux limiter "upload" qu'aux fichiers JGP sinon message d'erreur! Comment faire?

Az
A voir également:

1 réponse

AzRaElDGT Messages postés 57 Date d'inscription mercredi 25 juillet 2007 Statut Membre Dernière intervention 25 octobre 2008 2
13 oct. 2007 à 13:27
En faite j'ai trouvé! C'etait dans le php.ini

;;;;;;;;;;;;;;;;
; File Uploads ;
;;;;;;;;;;;;;;;;

; Whether to allow HTTP file uploads.
file_uploads = On

; Temporary directory for HTTP uploaded files (will use system default if not
; specified).
upload_tmp_dir = "${path}\tmp\"

; Maximum allowed size for uploaded files.
upload_max_filesize = 2M

Que j'ai remplacé par ca:

;;;;;;;;;;;;;;;;
; File Uploads ;
;;;;;;;;;;;;;;;;

; Whether to allow HTTP file uploads.
file_uploads = On

; Temporary directory for HTTP uploaded files (will use system default if not
; specified).
upload_tmp_dir = "${path}\tmp\"

; Maximum allowed size for uploaded files.
upload_max_filesize = 9M

Az
0