Bug avec Internet explorer 7 sur upload et copy d'image

Eléphant du PHP | 331 Messages

12 févr. 2008, 04:11

Bonjour,

J'ai un bug étrange.

J'ai un script qui upload une photo et en fait une copie redimensionné dans deux répertoire img_prod et img_prod/icones dans icones c'est les imagettes permettant que la page ne soit pas trop lourde.

Vous verrez qu'au départ l'image est envoyé dans un répertoire temporaire ceci afin que je puisse redimensionner l'image original même pour l'image qui sera utiliser pour visualisation plein écran quand l'utilisateur cliquera sur l'imagette.

Je fait celà car aujourd'hui les photos prise avec les appareils numérique sont lourde et grande inutilement poyr le Web.

Mon problème est que la copy dans le répertoire icones ne se fait pas quand l'utilisateur du script utilise Internet explorer 7.

Avec Firefox sa marche.

Avec Internet explorer 6 sa marche.

Mais pas avec Internet explorer 7.

Pouvez-vous m'aider svp?

Voici le code:
if($_FILES["images"]['name'] <> "" && $_FILES["images"]["type"]=="image/jpeg")
	{	
	
		$extptmp = explode(".",$_FILES["images"]['name']);	
		//------------------------------------------------------------------
		
		$car_speciaux = array( ' ','À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'Æ', 'à', 'á', 'â', 'ã', 'ä', 'å', 'æ', 'È', 'É', 'Ê', 'Ë', 'è', 'é', 'ê', 'ë', 'Ì', 'Í', 'Î', 'Ï', 'ì', 'í', 'î', 'ï', 'Ò', 'Ó', 'Ô', 'Õ', 'Ö', 'Ø', 'ò', 'ó', 'ô', 'õ', 'ö', 'ø', 'Ù', 'Ú', 'Û', 'Ü', 'ù', 'ú', 'û', 'ü', 'ß', 'Ç', 'ç', 'Ð', 'ð', 'Ñ', 'ñ', 'Þ', 'þ', 'Ý' );
		$car_normaux  = array( '_','A', 'A', 'A', 'A', 'A', 'A', 'A', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'E', 'E', 'E', 'E', 'e', 'e', 'e', 'e', 'I', 'I', 'I', 'I', 'i', 'i', 'i', 'i', 'O', 'O', 'O', 'O', 'O', 'O', 'o', 'o', 'o', 'o', 'o', 'o', 'U', 'U', 'U', 'U', 'u', 'u', 'u', 'u', 'B', 'C', 'c', 'D', 'd', 'N', 'n', 'P', 'p', 'Y' ); 
		$_FILES["images"]['name'] = str_replace($car_speciaux, $car_normaux, utf8_encode($_FILES["images"]['name']));  
				
		//------------------------------------------------------------------	
		if(is_uploaded_file($_FILES["images"]['tmp_name'])) 
		{
		//---------------------------------------------------------------------------------------
		move_uploaded_file($_FILES["images"]['tmp_name'], "".$pathImg."photos/img_prod/tmp/".$_FILES["images"]['name']."");
		$size = getimagesize("".$pathImg."photos/img_prod/tmp/".$_FILES["images"]['name']."") or die("getimagesize erreur");
    
		$newwidth=resize_images(1000, 1000, "".$url_racine."/photos/img_prod/tmp/".$_FILES["images"]['name']."") or die("rezine width erreur");

		$src_img = imagecreatefromjpeg("".$pathImg."photos/img_prod/tmp/".$_FILES["images"]['name']."") or die("imagecreatefromjpg erreur");
		$dst_img = imagecreatetruecolor ($newwidth[0],$newwidth[1]) or die("createtruecolor erreur");

		imagecopyresampled($dst_img, $src_img, 0, 0, 0, 0, $newwidth[0],$newwidth[1], $size[0], $size[1]) or die("imagecopyresampled erreur"); // la fonction qui redimensionne les photos
		imagejpeg($dst_img, "".$pathImg."photos/img_prod/".$_FILES["images"]['name']."", 60) or die("imagejpg erreur");
		imagedestroy($src_img) or die("destroy src_img erreur");
		imagedestroy($dst_img) or die("destroy dest_img erreur"); 
		//-----------------------------------------------------------------------------------------
			 
			$sqlup = "UPDATE photos SET image=\"".$_FILES["images"]['name']."\" where id=".$id."";
			$conn = mysql_connect($host, $login, $password) or die ("Erreur de connection");
			mysql_select_db($db) or die("erreur de DB");
			$rsup = mysql_query($sqlup) or die ($sqlup);
			mysql_close($conn);
			chmod("".$pathImg."photos/img_prod/".$_FILES["images"]['name']."", 0644);
			////chown("".$pathImg."photos/img_prod/".$_FILES["images"]['name']."", village);
		//--------------------------------------------------------------------------------------------
	$size = getimagesize("".$pathImg."photos/img_prod/".$_FILES["images"]['name']."") or die("getimagesize erreur");
    
	$newwidth=resize_images2(200, 200, "".$url_racine."/photos/img_prod/".$_FILES["images"]['name']."") or die("rezine width erreur");

    $src_img = imagecreatefromjpeg("".$pathImg."photos/img_prod/".$_FILES["images"]['name']."") or die("imagecreatefromjpg erreur");
    $dst_img = imagecreatetruecolor ($newwidth[0],$newwidth[1]) or die("createtruecolor erreur");

    imagecopyresampled($dst_img, $src_img, 0, 0, 0, 0, $newwidth[0],$newwidth[1], $size[0], $size[1]) or die("imagecopyresampled erreur"); // la fonction qui redimensionne les photos
    imagejpeg($dst_img, "".$pathImg."photos/img_prod/icones/".$_FILES["images"]['name']."", 60) or die("imagejpg erreur");
    imagedestroy($src_img) or die("destroy src_img erreur");
    imagedestroy($dst_img) or die("destroy dest_img erreur");    
//Creation des icones
	$delete_file=unlink("".$pathImg."photos/img_prod/tmp/".$_FILES["images"]['name'].""); 		
		}
	}

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

12 févr. 2008, 09:50

"Ca ne marche pas" ne nous est d'aucune aide pour t'apporter un chemin vers la résolution de ton problème ;)

Que se passe-t-il réellement ? message d'erreur ?
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

ViPHP
AB
ViPHP | 5818 Messages

12 févr. 2008, 12:01

Comme l'a déjà dit Zeus, il nous faudrait plus de précisions concernant le fait que cela ne marche pas.

Par ailleurs tu ne nous montres que du code PHP. Et ce n'est pas celui-ci qui va faire une différence entre les différents navigateurs puisque ce code n'est pas interprété par les navigateurs mais par le serveur...

Cela pourrait plus probablement venir de la partie html.

Eléphanteau du PHP | 27 Messages

12 févr. 2008, 13:01

Hmm çà serait pas une histoire de $_FILES["images"]["type"]=="image/jpeg" qui est en fait $_FILES["images"]["type"]=="image/jpg" sous IE?

Il me semble qu'il y a une différence du type mime envoyé par le formulaire.

Teste sans la verif JPG pour voir si c'est ca.
alllezzzzz repondez!!!!! ;)

Eléphant du PHP | 331 Messages

12 févr. 2008, 15:35

Se qui ne marche pas je l,avais écrit:
Mon problème est que la copy dans le répertoire icones ne se fait pas quand l'utilisateur du script utilise Internet explorer 7.
Le upload fonctionne dans le répertoire temporaire.

La copy avec imagejpeg du répertoire temporaire vers le répertoire img_prod fonctionne.

MAIS .... la création de la copie avec imagejpeg du répertoire temporaire vers le répertoire img_prod/icones ne se fait pas.

Je sais, c'est pas sencer être a cause du navigateur car le code est exécuté sur le serveur.

Voici mon code html:

<form name="ajout_produits" method="post" action="photos/ajout_photos.php" enctype="multipart/form-data">
<tr>
<td>Image :</td>
</tr>
<tr>
<td><input type="file" name="images" ></td>
</tr>
Merci

Eléphant du PHP | 331 Messages

14 févr. 2008, 04:54

Oui, il semble effectivement que le bug soit du a la vérification jpeg.

Cependant, sa ma pas en remplaçant jpeg par jpg

Eléphant du PHP | 331 Messages

14 févr. 2008, 05:21

Bug réglé.

Je déteste Internet explorer.

Pour internet explorer il ne faut pas mettre:
if($_FILES["images"]['name'] <> "" && $_FILES["images"]["type"]=="image/jpeg")
Mais plutôt:
if($_FILES["images"]['name'] <> "" && $_FILES["images"]["type"]=="image/pjpeg")
Vous voyez le p de plus.

pjpeg au lieu de jpeg

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Cependant, lèa faut que je mette une condition pour Firefox parce que pjpeg sa marche pas avec Firefox.

Comme celà:
if($_FILES["images"]['name'] <> "" && $_FILES["images"]["type"]=="image/pjpeg") ||  $_FILES["images"]["type"]=="image/jpeg"