Portail PHP

Forum de discussion et d'aide au php

Vous n'êtes pas identifié.

Annonce

Regles d'utilisation des forums : pensez à toujours les respecter si vous désirez obtenir des réponses rapides.
FAQ : pensez à toujours chercher dedans si la réponse à votre question est dedans.
Proposez vos news : si vous avez un evenement à annoncer
le chat : venez discuter de php.
 

#1 27-06-2005 12:32:11

bigjet
Membre
Date d'inscription: 27-06-2005
Messages: 25

Mon script ne marche pas sous IExplorer

Bonjour,

j'ai un script qui permet d'envoyer des images sur le serveur et qui incruste un logo (img.png) dans les images jpg.
Tout marche parfaitement bien sur firefox, mais avec iexplorer, l'inscrusation n'a pas lieu hmm L'upload et la sauvegarde sur le serveur se déroule très bien dans tous les navigateurs...

Problème dans mon formulaire d'envoi? dans mon test de determination d'une image jpg?

vous pouvez voir le script en action sur http://bigjet.free.fr/upload et tester que les jpg ne s'incrustent pas quand on utilise IExplorer...


<FORM ENCTYPE="multipart/form-data" ACTION="index.php" METHOD="POST">
Votre image: <INPUT TYPE="file" NAME="userfile">
<INPUT TYPE="submit" VALUE="Upload">
</FORM>

<?php


$path = "images/";
$max_size = 20000;

if (!isset($HTTP_POST_FILES['userfile'])) exit;

if (is_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'])) {

if ($HTTP_POST_FILES['userfile']['size']>$max_size) { echo "L'image que vous avez sélectionné est trop lourde<br>\n"; exit; }
if (($HTTP_POST_FILES['userfile']['type']=="image/gif") || ($HTTP_POST_FILES['userfile']['type']=="image/pjpeg") || ($HTTP_POST_FILES['userfile']['type']=="image/jpeg"))
{

if (file_exists($path . $HTTP_POST_FILES['userfile']['name']))
{
echo "L'image que vous avez selectionné existe dejà. Veuillez renommer le fichier ou choisir une autre image.<br>\n";
exit;
}

$res = copy($HTTP_POST_FILES['userfile']['tmp_name'], $path .$HTTP_POST_FILES['userfile']['name']);

if ($HTTP_POST_FILES['userfile']['type']=="image/jpeg")
{
//merci à matheo!
  $source = imagecreatefrompng("img.png"); // Le logo est la source
  $destination = imagecreatefromjpeg($path .$HTTP_POST_FILES['userfile']['name']); // La photo est la destination

  // Les fonctions imagesx et imagesy renvoient la largeur et la hauteur d'une image
  $largeur_source = imagesx($source);
  $hauteur_source = imagesy($source);
  $largeur_destination = imagesx($destination);
  $hauteur_destination = imagesy($destination);

  // On veut placer le logo en bas à droite, on calcule les coordonnées où on doit placer le logo sur la photo
  $destination_x = $largeur_destination - $largeur_source;
  $destination_y =  $hauteur_destination - $hauteur_source;

  // On met le logo (source) dans l'image de destination (la photo)
  imagecopymerge($destination, $source, $destination_x, $destination_y, 0, 0, $largeur_source, $hauteur_source, 60);

  // On affiche l'image de destination qui a été fusionnée avec le logo
  imagejpeg($destination, $path.$HTTP_POST_FILES['userfile']['name']);
}
if (!$res)
{
  echo "L'upload de l'image a échoué pour une raison inconnue!<br>\n";
  exit;
}
else
{
   echo "Image uploadée avec succès";
}
else { echo "Mauvais format d'image<br>\n"; exit; }

}
?>

Hors ligne

 

#2 27-06-2005 12:35:25

kazhar
Ex-Webmaster
Lieu: Orléans
Date d'inscription: 25-06-2004
Messages: 3381
Site web

Re: Mon script ne marche pas sous IExplorer

il n'y a aucune raison que ce soit du à internet explorer, étant donné que le php n'est pas interprété par le navigateur, mais par le serveur...

Hors ligne

 

#3 27-06-2005 12:39:47

bigjet
Membre
Date d'inscription: 27-06-2005
Messages: 25

Re: Mon script ne marche pas sous IExplorer

Oui mais la méthode post est initialement envoyé par le navigateur non?

Sinon pourquoi est-ce que le script ne marche pas comme supposé avec IExplorer?
Sur Mozilla il y a aucun problème, comme on peut le vérifier avec le lien que j'ai mis plus haut

Hors ligne

 

#4 27-06-2005 12:44:15

kazhar
Ex-Webmaster
Lieu: Orléans
Date d'inscription: 25-06-2004
Messages: 3381
Site web

Re: Mon script ne marche pas sous IExplorer

je viens de tester, mes deux images ont été correctement envoyées.
(Ciel3 : avec firefox; Ciel4 : avec ie)

Hors ligne

 

#5 27-06-2005 12:47:10

bigjet
Membre
Date d'inscription: 27-06-2005
Messages: 25

Re: Mon script ne marche pas sous IExplorer

Sinon, est qu'il y a moyen d'utiliser la fonction imagecreatefromjpeg() directement à partir d'un envoi de fichier?

Moi ce que je fais c'est que j'upload l'image sur le serveur et ensuite je réalise le traitement dépendemment du type d'image.

Hors ligne

 

#6 27-06-2005 12:49:16

bigjet
Membre
Date d'inscription: 27-06-2005
Messages: 25

Re: Mon script ne marche pas sous IExplorer

KaZhaR a écrit:

je viens de tester, mes deux images ont été correctement envoyées.
(Ciel3 : avec firefox; Ciel4 : avec ie)

Dans Ciel.4 , il n'y a pas eu d'incrustations...

http://bigjet.free.fr/upload/images/Ciel4.jpg
http://bigjet.free.fr/upload/images/Ciel3.jpg

Hors ligne

 

#7 27-06-2005 12:53:59

kazhar
Ex-Webmaster
Lieu: Orléans
Date d'inscription: 25-06-2004
Messages: 3381
Site web

Re: Mon script ne marche pas sous IExplorer

pardon :?
tu fait l'incrustation avant d'enregistrer l'image la non ?
si tu l'enregistre, et que tu fait l'incrustation sur l'image deja enregistrée ca donne quoi ?
(encore une fois, c vraiment bizarre que ie refuse de faire cela étant donné que c'est le serveur qui le fait...)

Hors ligne

 

#8 27-06-2005 12:57:37

bigjet
Membre
Date d'inscription: 27-06-2005
Messages: 25

Re: Mon script ne marche pas sous IExplorer

Si mon image est valide, je l'enregistre sur le serveur:

Code:

$res = copy($HTTP_POST_FILES['userfile']['tmp_name'], $path .$HTTP_POST_FILES['userfile']['name']);

Une fois qu'elle est enregistrée, si c'est un jpg, je l'incruste

$destination = imagecreatefromjpeg($path .$HTTP_POST_FILES['userfile']['name']);
Je crée une image jpg à partir de celle qui est présente sur le serveur.
J'ai pas reussi à utiliser la fonction imagecreatefromjpeg("adresse de l'image") directement à partir du fichier envoyé.

Hors ligne

 

#9 27-06-2005 13:23:32

palmivore
Modérateur global
Lieu: 49 - Maine et Loire
Date d'inscription: 07-04-2005
Messages: 1783
Site web

Re: Mon script ne marche pas sous IExplorer

JE viens de faire le test avec Crazy Browser, idem, pas d'incrustation... noyeau ie ? c'est quand même extrêmement étrange car le navigateur n'a rien à voir avec le traitement de l'image...

Hors ligne

 

#10 27-06-2005 14:11:31

bigjet
Membre
Date d'inscription: 27-06-2005
Messages: 25

Re: Mon script ne marche pas sous IExplorer

C'est un véritable mystère...
je comprend plus rien...

Mais j'ai reussi à identifier le probleme! C'est mieux que rien... smile

le probleme est quand je teste le type d'image:

Code:

if ($HTTP_POST_FILES['userfile']['type']=="image/jpeg")
{
 traitement inscrustation
}

si j'enleve la condition, l'inscrustation se deroule sans problemes... Mais j'ai besoin de tester le type d'image car une image gif produira des erreurs si jamais elle est traitée de cette facon hmm

Maintenant reste à résoudre le probleme et à trouver une alternative pour que ca marche sur Ie...

Hors ligne

 

#11 27-06-2005 14:25:38

bigjet
Membre
Date d'inscription: 27-06-2005
Messages: 25

Re: Mon script ne marche pas sous IExplorer

C'est bon j'ai réussi!

Une fois que j'ai uploadé, je sauvegarde la variable $HTTP_POST_FILES['userfile']['type'] dans une autre variable.

Et ensuite je fais mon test à partir de la nouvelle variable smile

Code:

$type_image = $HTTP_POST_FILES['userfile']['type'];

.....

Code:

if ($type_image=="image/jpeg")

en tout cas marche smile


P-e que c'est Ie qui detruit la variable trop rapidement??

Hors ligne

 

#12 27-06-2005 14:39:18

palmivore
Modérateur global
Lieu: 49 - Maine et Loire
Date d'inscription: 07-04-2005
Messages: 1783
Site web

Re: Mon script ne marche pas sous IExplorer

chelou.... mais bon si tu as trouvé tant mieux !

Hors ligne