Problème sous Windows 7 et IE 8 avec un formulaire d'Allopass.

WRInaute accro
Bonjour

Le problème concerne le formulaire d'abonnement de Allopass sous IE 8 et Windows 7.

Le fait d'envoyer le formulaire d'abonnement se passe bien, mais dès que le script distant d'abonnement de Allopass est lancé sous cet environnement ( pas avec Chrome ou Firefox sous Linux Fedora 1 64 bits où tout se passe correctement ), une fenêtre d'erreur s'affiche, manifestement lancée par le script distant d'abonnement de Allopass situé sur le site d'Allopass, indiquant ce message d'erreur :

-----------------------------------------------
allopass.com

An error occured

Script execution failed with exit status: 61103

Please contact the visited site's webmaster and ask him about your problem.

Copyright 2001-2010 Allopass - All rights reserved
-------------------------------------------------

Pour info, le formulaire distant d'abonnement, est lancé dans une fonction stasub() déclenchée en réponse à l'événement onsubmit(return stasub(this);) dans la balise <form d'envoi du formulaire dans mon script.

La fonction stasub(this) a comme paramètre le pointeur du formulaire, et le formulaire distant de Allopass est bien lancé dans cette fonction, par une création d'une fenêtre par window.open(), comme le spécifie la documentation d'Allopass.

Je suis obligé de passer par cette fonction, et le protocole d'envoi de cette fonction, est strictement conforme aux normes XHTML et Javascript.

D'où vient l'erreur, qui n'atteint pas Firefox ni Chrome ?

Cette erreur, provient-elle du fait, que la création de cette fenêtre avec en deuxième paramètre de open, la fonction target du formulaire, cette création a lieu avant la fin de la fonction stasub avec return(true); , c'est-à-dire en fait, avant que l'événement onsubmit ait été propagé ?

Cette erreur, ne semble-t-elle pas être prise en compte par le script distant de Allopass sur le site d'Allopass, puisque la fenêtre ( voir ci-dessus ) qui s'affiche, indique que le script qui a lancé cette fenêtre, est le script distant d'Allopass, qui ( remarquons-le au passage ), a bien été lancé ?

Peut-on penser, que les scripts d'abonnement de Allopass ( sur le site d'Allopass ), ne sont pas compatibles avec IE 8 et Windows 7 ?

Le navigateur IE 8 est-il correctement compatible avec Windows 7 ?

Je n'ai pas de possibilités de tester sous d'autres Windows d'autres versions, car c'est mon dirlo qui fait les tests, je n'ai pas Windows sur mon ordi. ;(

Merci beaucoup de vos réponses.

Bien à vous.

Amicalement.

Jean-François Ortolo
 
WRInaute accro
Bonjour ;)

Voici le code du script, réduit aux instructions du formulaire et de la fonction stasub(this), déclenchée par le formulaire cben :

Ce script est le script votrecompte_allopass.php , qui est relancé ( la page est rafraîchie ), après prise en compte de l'abonnement, qui est détectée dans le script attente.php, par la modification du mot de passe Allopass de l'utilisateur $idabo, contenu dans la base de données.

Ce rafraîchissement permet aux données d'être mises à jour avec le nouveau délai de validité de l'abonnement, après que l'abonnement ait été effectué sur le site Allopass.

Je suis obligé d'avoir un élément déclencheur pour ce rafraîchissement. Il est vrai que ce script votrecompte_allopass.php est bien relancé par Allopass ( en temps normal, sous d'autres environnements ), mais l'adresse ip distante est celle d'Allopass, ce qui m'empêche de faire un refresh() par l'instruction header("Location: votrecompte_allopass.php"); dans ce script après prise en compte des données d'abonnement, car la page est rafraîchie pour Allopass, pas pour le navigateur client.

Je suis ainsi obligé de passer par le hack d'une fonction stasub(nForm) sur le script de départ, et comme son adresse ip distante est bien celle du client, le refresh peut se faire.

Si ce mot de passe est modifié, ce script attente.php rend la chaîne "OK", sinon, il attend 5 minutes avant de s'arrêter, et rend "BAD".

Ce script attente.php comporte l'instruction :

header("Content-type: text/plain");

de manière à ce qu'il soit possible de le lancer sous Internet Explorer en Javascript, et de lire sa réponse dans la variable xhr.responseText.

Ce n'est pas à ce niveau que se situe l'erreur, qui est lancée par le script distant d'abonnement de Allopass, accédé lors de l'ouverture par window.open, de la fenêtre de ce script, vers la fin de la fonction stasub(nForm), qui rend la valeur true, pour que l'événement onsubmit soit correctement propagé.

Une question : le paramètre nForm contenant le pointeur du formulaire, entraîne-t-il bien que le contenu de la variable "data" du formulaire, soit accessible par : nForm.data.value ?

IE 8 a-t-il des spécificités différentes des autres navigateurs, pour la transmission des paramètres des formulaires ?

Le problème, spécifique à Internet Explorer 8 et théoriquement à Windows 7 ( sous toutes réserves ), indique-t-il que les scripts d'abonnement de Allopass, sont incompatibles avec cet environnement ?

Voici le code :

--------------------------------------------------------------------
<html>
<head>
<title>Votre compte</title>
<meta http-equiv="Pragma" Content="no-cache">
</head>
<script language="Javascript">
<!--
var m;

function suite(idabo, m)
{
var res;
var res2;

var adr = "http://www.lescourses.com/attente.php?idabo=" + idabo + "&dummy=" + new Date().getTime();

var xhr;
try { xhr = new ActiveXObject('Msxml2.XMLHTTP'); }
catch (e)
{
try { xhr = new ActiveXObject('Microsoft.XMLHTTP'); }
catch (e2)
{
try { xhr = new XMLHttpRequest(); }
catch (e3) { xhr = false; }
}
}

xhr.onreadystatechange = function()
{
if(xhr.readyState == 4)
{
if(xhr.responseText != '')
{
res=xhr.responseText;

res2=res.substring(0, 2);

if(res2 == 'OK')
{
// Faut-il fermer
// la popup ?
//
// m.close();

window.focus();

// Cela permet
// de recharger la page,
// sans déclencher une fenêtre
// modale, si la page de départ
// avait été lancée
// par un formulaire.
location.replace("votrecompte_allopass.php");
}
}
}
};

xhr.open("GET", adr, true);
xhr.send(null);
}

function stasub(nForm)
{
var m;

var idabo=nForm.data.value;

// Ancien test réussi d'affichage
// des données du formulaire.
// ( Je n'ai pas testé cela
// avec IE 8 et Windows 7. )
//
// window.alert("name=" + nForm.name + " , action=" + nForm.action + " , method=" + nForm.method + " , target=" + nForm.target + ", ids=" + nForm.ids.value + " , idd=" + nForm.idd.value + " , lang=" + nForm.lang.value + " , idabo=" + nForm.data.value);

m=window.open('','DisplaySub','toolbar=0,location=0,directories=0,status=1,menubar=0,scrollbars=1,resizable=1,width=600,height=570');

// La fonction suite déclenche
// le script attente.php?idabo=$idabo
// qui commence par lire le contenu
// de la table abonnes pour l'idabo paramètre,
// puis attendra que le mot de passe ait changé,
// puis rendra la main en affichant "OK",
// ce qui déclenche un focus sur la fenêtre
// et un refresh,
// ou bien qu'un délai
// maximum de 5 minutes se soit écoulé.
//
suite(idabo, m);

return(true);
}

//-->
</script>

<body bgcolor="#FFFFFF" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">

<form name="cben" action="https://payment.allopass.com/subscription/subscribe.apu" method="POST" target="DisplaySub" onsubmit="return stasub(this);">
<input type="hidden" name="ids" value="xxxxx"
<input type="hidden" name="idd" value="yyyyyy">
<input type="hidden" name="lang" value="fr">
<input type="hidden" name="data" value="<?php echo $idabo; ?>">

<input type="image" src="https://www.allopass.com/imgweb/script/fr/cb_subscribe.gif" alt="Subscribe" border=0>
</form>


</body>
</html>
---------------------------------------------------------------

Merci beaucoup de vos réponses.

Bien à vous.

Amicalement.

Jean-François Ortolo
 
WRInaute accro
Re: [RESOLU] Problème sous Windows 7 et IE 8 avec un formulaire d'Allopass.

ortolojf a dit:
--------------------------------------------------------------
<form name="cben" action="https://payment.allopass.com/subscription/subscribe.apu" method="POST" target="DisplaySub" onsubmit="return stasub(this);">
<input type="hidden" name="ids" value="xxxxx"
<input type="hidden" name="idd" value="yyyyyy">
<input type="hidden" name="lang" value="fr">
<input type="hidden" name="data" value="<?php echo $idabo; ?>">

<input type="image" src="https://www.allopass.com/imgweb/script/fr/cb_subscribe.gif" alt="Subscribe" border=0>
</form>
---------------------------------------------------------------

Jean-François Ortolo


Bonjour

En fait, le problème était très simple.

Dans le code html ci-dessus, au lieu de :

<input type="hidden" name="ids" value="xxxxx"

il fallait mettre :

<input type="hidden" name="ids" value="xxxxx">


Le chevron fermant manquant occasionnait l'erreur pour Internet Explorer 8, qui est plus sensible que les autres navigateurs, aux erreurs de code html. Comportement normal pour un navigateur, c'est sûr.

Vous me direz : "Elle est grosse celle-là !".

J'avoue... Un post pour rien... La honte... ;(

Bien à vous.

Amicalement.

Jean-François Ortolo
 
Discussions similaires
Haut