[Compatibilité entre Moz et IE] Problème de rafraichissement [resolu]

Problème de rafraichissement [resolu] [Compatibilité entre Moz et IE] - PHP - Programmation

Marsh Posté le 24-05-2004 à 14:22:18    

Bonjour à tous,
je travaille sur un site qui propose des pop ups personnalisés aux clients.
j'ai repris une petite interface qui permet à un client de gérer ses popUp.
C'est à dire qu'il peut éditer grace à une interface en ligne le texte, et les photos de son Popup.
J'ai testé pendant le développement sous Moz et tout marche nickel. seulement sous IE, j'ai un problème de rafraichissement.  C'est à dire que lorsque le client choisit une image, l'upload se passe bien et la nouvelle image est bien copiée sur le serveur, mais sous IE, l'image affichée est l'ancienne, alors que c'est bien la nouvelle qui s'affiche sous Moz. En fait, à chaque fois, je copie la photo sur le serveur sous le nom commerces/numeroduclient/image.jpg   Avec les deux navigateurs, l'image qui est créée à cette adresse est bien la bonne, Mozilla m'affiche celle là, mais IE m'affiche celle qu'il a gardé en cache apparement. je vous met des morceaux de mon code :  
 

Code :
  1. //Mon popup $pub est un objet de la classe PopUp
  2. //J'appelle la methode suivante de PopUp pour afficher mon image
  3. // $pub->majimage()
  4. //cette methode me retourne le code html qui va afficher l'image
  5. //Voila le code de ma méthode majimage:
  6. function majimage()
  7. {
  8. //je donne le chemin de l'image
  9. $cheminim=commerces/c'.$this->_commerce['numero'].REPERTOIRE_POPUP_SIMPLE.$this->_numero.'/';
  10. //nom de l'image avec son chemin
  11. $imagetmp = $cheminim."image.jpg";
  12. //chemin depuis la racine du serveur apache
  13. $cheminabsolu=CHEMIN_BASE.$cheminim."image.jpg";
  14. //je recupere la taille de l'image
  15. $taille_img = getimagesize($cheminabsolu);
  16. //calcul des dimensions de l'image affichée
  17. $facteurLargeur=$taille_img[0]/300;
  18.     $facteurHauteur=$taille_img[1]/300;
  19.     $facteur=Max($facteurLargeur,$facteurHauteur);
  20.     $largeur=round($taille_img[0]/$facteur);
  21.     $hauteur=round($taille_img[1]/$facteur);
  22. //creation du code html qui va afficher l'image
  23. //on met ce code dans l'attribut _image de mon objet PopUp
  24. //afin de pouvoir reutiliser cette image
  25. $this->_image='<img src="'.'../'.$imagetmp.'" border=0 width='.$largeur.' height='.$hauteur.'>';
  26. //on retourne l'affichage de l'image
  27. $imagefin='<img src="'.'../'.$imagetmp.'" border=0 width='.$largeur.' height='.$hauteur.'>';
  28. return $imagefin;
  29. }


Donc je voulais savoir si j'ai fais une erreur de code, ou si c'est juste IE qui fonctionne mal, et qui va chercher systématiquement dans son cache, sans se soucier du fait que l'image peut avoir changé entre temps, meme si elle a toujours le meme nom


Message édité par force_jaune le 25-05-2004 à 10:32:32
Reply

Marsh Posté le 24-05-2004 à 14:22:18   

Reply

Marsh Posté le 24-05-2004 à 20:53:50    

essaies ça :
<META HTTP-EQUIV="PRAGMA" CONTENT="no-cache">
 
et ton pb vient bien du fait qu'ie va chercher l'image dans le cache

Reply

Marsh Posté le 25-05-2004 à 00:21:09    

Voilà, il a qu'à mettre une balise META dans son image. Bonne idée !  :whistle:  
 
Plus sérieusement, la solution la plus simple est sûrement de changer le nom de l'image quand tu en charges une nouvelle. Par exemple pour un truc du genre image_635627.jpg, où le nombre vient du timestamp.  
 
Après soit tu vas regarder le nom du fichier image_*.jpg dans le répertoire du client, soit tu gardes le nom du fichier dans son profil.


---------------
Info-Camargue, le portail de la Camargue
Reply

Marsh Posté le 25-05-2004 à 09:12:38    

en fait, je suis obligé d'appeler mon image "image.jpg", puisque j'ai un gros site qui tourne derrière et qui accède régulièrement à cette image par son nom, et pour le moment j'ai pas trop envie de tout changer, ça serait trop long. Donc si je pouvais trouver une autre solution, ça serait l'idéal ;)
En tout cas, merci pour vos réponses, j'ai pas tout capté ou je dois mettre le <META>, mais je vais me renseigner sur cette balise, merci encore :)

Reply

Marsh Posté le 25-05-2004 à 09:56:29    

Sur la page qui est mal rafraichie, rajoute une variable aléatoire derrière le nom de l'image : image.jpg?123456, ca force IE à la télécharger.

Reply

Marsh Posté le 25-05-2004 à 10:26:10    

ok, je vais essayer de suite, merci beaucoup ;)

Reply

Marsh Posté le 25-05-2004 à 10:32:11    

ça marche nickel, merci a vous tous, c pas con du tout, le coup du nombre aleatoire derriere le lien de l'image, j'y aurais jamais pensé :)

Reply

Marsh Posté le 25-05-2004 à 21:52:32    

Thierry Chatel a écrit :

Voilà, il a qu'à mettre une balise META dans son image. Bonne idée !  :whistle:  
 
Plus sérieusement, la solution la plus simple est sûrement de changer le nom de l'image quand tu en charges une nouvelle. Par exemple pour un truc du genre image_635627.jpg, où le nombre vient du timestamp.  
 
Après soit tu vas regarder le nom du fichier image_*.jpg dans le répertoire du client, soit tu gardes le nom du fichier dans son profil.


jusqu'à preuve du contraire une balise <img> c'est du html, donc je ne vois pas ce qui empeche de mettre une balise meta dans une page html.
 
et la solution des nombres aléatoires est pour les bricoleurs du dimanche qui ne savent pas faire autrement...   :pfff:


Message édité par misterpinguin le 25-05-2004 à 21:52:55
Reply

Marsh Posté le 12-05-2008 à 17:52:42    

J'avais le même problème l'astuce de la balise meta fonctionne aussi très bien. A mettre dans la partie head de la page html sur laquelle on veut désactiver le cache.


Message édité par viperledesuet le 12-05-2008 à 17:53:19
Reply

Marsh Posté le 13-05-2008 à 09:04:48    

Finalement çà ne fonctionne pas si bien que çà j'ai utilisé la methode du numéro aléatoire, çà fonctionne a tous les coups.
 
exemple : <img src="img.png?<?=time()?>">

Reply

Marsh Posté le 13-05-2008 à 09:04:48   

Reply

Marsh Posté le 13-05-2008 à 09:06:51    

Déterrage de 4 ans à quelques jours près, joli.


---------------
Instagram - Mon PVT en Australie.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed