Categories > TinyButStrong general (FR) >

Problème aléatoire avec Internet Explorer...

The forum is closed. Please use Stack Overflow for submitting new questions. Use tags: tinybutstrong , opentbs
By: jibe74
Date: 2007-01-02
Time: 16:24

Problème aléatoire avec Internet Explorer...

Bonjour,

Je rencontre un problème aléatoire qui apparait surtout avec Internet Explorer (versions 6 ou 7, antérieures pas testées), et beaucoup plus rarement avec Firefox ou Opera, et semble-t-il uniquement sous Windows (en tous cas, je n'ai jamais pu le faire apparaitre sous Linux, y compris avec IE6 sous wine).

Le problème apparait sous différentes formes, mais principalement :
- Mauvaise page de style sélectionnée (je sélectionne le fichier CSS en fonction du navigateur)
- variables non converties en leur valeur sur certaines lignes seulement.

Ainsi, lorsque le problème apparait, je retrouve dans le code HTML les lignes suivantes :

<img class="vignette" src="galerie05/vignettes/[var.vignette1]" alt="" />

</td>

<td class="vignette">

<img class="vignette" src="galerie05/vignettes/0001s.jpg" alt="" />

</td>

<td class="vignette">

<img class="vignette" src="galerie05/vignettes/0002s.jpg" alt="" />

</td>


On voit que [var.vignette1] n'a pas été remplacé, alors que [var.vignette2] et [var.vignette3] l'ont été respectivement par 0001s.jpg et 0002s.jpg ([var.vignette1] aurait dû être remplacé par 0000s.jpg)...

J'avoue que le fait que le problème aparaisse très peu souvent sous Firefox et pas du tout sous Linux fait que je ne vois vraiment pas de quel côté chercher... Que puis-je faire pour tenter de mieux en localiser l'origine ?
By: Skrol29
Date: 2007-01-03
Time: 23:52

Re: Problème aléatoire avec Internet Explorer...

Bonjour,

Bien sûr le problème ne peut pas être directement au navigateur car il ne fait qu'afficher le contenu HTML qu'un script PHP a prélabalement généré côté serveur.
Cepedant le problème peut être lié indirectement au navigateur si ton script PHP récupères les infos des entêtes de requête HTTP émises par le navigateur lors de l'appel de l page requise. C'est probablement ce qu'il t'arrive.

Ceci étant dis, pour localiser le problème, examinons quelques pistes.
Ce n'est pas normal que me champ [var.vignette1] n'ait pas été fusionné alors que les autre champs [var] l'on été. Si [var.vignette1] est placé ans un modèle principal, comme [var.vignette2] et [var.vignette3], alors TBS aurait dû retourner un message d'erreur.
Pour débugger, remet les conditions de reporduction du bug puis vérifie que tu n'as pas désactivé les messages d'erreur par un $TBS->NoErr, puis regarde le haut du source de ta page générée, tu dervais voir un message d'erreur TBS.
Si tu ne vois rien ce n'est pas normal.
Tu peux aussi vérifier que $vignette1 existe bien lors de $TBS->Show() (les champ Var étant fusionnés lorsque Show() est exécuté). Pour cela il suffit de placer une ligne ccode du genre :
  echo "*-> vignette1 : ".(isset($vignette1)) ? "ok" : "non")."<br/> \r\n";
juste devant le $TBS->Show();

Voilà, ce sont des débuts de piste de débugage.
By: jibe74
Date: 2007-01-04
Time: 18:07

Re: Problème aléatoire avec Internet Explorer...

Bonjour,

Merci pour ta réponse. En fait, le message concernant la non-affectation de [var.vignette1] apparait bien en même temps que le problème. Les variables sont affectées de cette façon:
$vignette1=$vignettes[$iphotstart];
$vignette2=$vignettes[$iphotstart+1];
$vignette3=$vignettes[$iphotstart+2];
Il semblerait donc que $iphotstart soit parfois non affecté (cela me fait penser qu'en mettant $vignette1=$vignettes[iphotstart+0] j'aurais un moyen d'obtenir un affichage "correct", mais avec les 3 premières vignettes... et la mauvaise feuille de style...). Or, elle ne devrait pas pouvoir rester vide et elle ne l'est d'ailleurs jamais dans le cas d'un navigateur sous Linux !!!

Mais effectivement, l'affectation de cette variable est fonction de la valeur d'une autre, passée dans l'URL. Tu as donc vu juste en parlant de récupération des infos d'entêtes HTTP... Mais comment faire ? Je pensais ma méthode simple et fiable : il s'agit d'afficher 3 vignettes parmi une série, selon que l'on clique sur "précédent" ou "suivant". Le code HTML est tout bête :
<a href="photo.php?act=p">précédent</href>
<a href="photo.php?act=s">suivant</href>
et le code PHP :
if ($_GET['act']=='p') {
    if ($iphotstart>0) {
        $iphot--;
        $iphotstart--;
    }
}
else if ($_GET['act']=='s') {
    if ($iphotstart<($iphotmax-3)) {
        $iphot++;
        $iphotstart++;
    }
}
else if (!isset($iphot)) {
    $iphot=0;
    $iphotstart=0;
}

Comment puis-je rendre tout ça totalement indépendant des caprices de certains navigateurs/OS ? Je vais re-vérifier, mais je suis presque sûr que, lorsque le problème apparait, l'URL est parfaitement correcte, avec la variable passée...

PS : ayant bien le message d'ereur, je n'ai pas jugé utile de faire le test que tu me proposes...
By: jibe74
Date: 2007-01-05
Time: 17:46

Re: Problème aléatoire avec Internet Explorer...

Bonjour,

En voulant faire des essais complémentaires, je m'aperçois que le problème ne se produit que sur le site hébergé et pas sur mon serveur de tests !!!

L'hébergement est chez Free.fr, avec un PHP version 4.43 modifié pour limiter la fonction mail() et quelques autres aménagements.

Mon serveur de tests est sous Linux SME 6.01, avec PHP version 4.12. Je n'utilise pas MySQL.

Donc, essais pas facilités : j'ai à chaque fois à mettre à jour par FTP pour tester sur le serveur de Free.fr :-(

Se pourrait-il que cela vienne de la version de PHP ?
By: Skrol29
Date: 2007-01-05
Time: 18:56

Re: Problème aléatoire avec Internet Explorer...

Salut Jibe74,

Le problème semble donc venir de l'affectation ou non de $iphotstart.
Ce n'est pas un problème léà TBS et pour t'aider il faudrait savoir exactement comment tu intitialise cette variable.

Il faut aussi savoir que les info spécifique que le navigateur envoie au serveur peuvent être factultatives. C'est donc ton script qui doit s'adapter à toutes les circonstences possibles. La solution la plus simple serait de vérifier que cette variable est bien affectée avec un isset() et de la forcer si ce n'est pas le cas.