Fran�ois Boisson <[EMAIL PROTECTED]> writes:
> On Fri, 23 Jul 2004 11:05:51 +0200
> Leopold BAILLY <[EMAIL PROTECTED]> wrote:
>
>> Fran�ois Boisson <[EMAIL PROTECTED]> writes:
>>
>> > Par ailleurs c'est vrai que IE pose des pbms curieux, je cherche une
>> > indication � ce pbm: La personne connect� sur le site doit d�poser un
>> > message via un script PHP, le message est mis dans une table mysql via
>> >
>> > $resultat=IntroduireMessageBD($sessnum,$_POST['inMessage'],$_POST['ms
>> > gTyp e']);
>> >
>> > Bref, tout va tr�s bien sauf pour certains (en gros 3 sur 600) sous
>> > WindowsXP/IE6 o� rien n'est stock�. J'ai fait des tests avec une telle
>> > machine, �a marche dans mon cas, je n'arrive pas � reproduire le bug.
>> > Si quelqu'un a une piste, je suis preneur.
>>
>> Rien n'est stock�, cad :
>> - aucune ligne enregistr�e en BD, ou bien
>> - une ligne avec message=vide
Tu ne m'as pas r�pondu ici.
>> Il faudrait �galement voir la page html o� il y a le formulaire.
>> Y a-t-il du javascript dans cette page ?
>>
>
> Voil� l'extrait du code HTML produit par le php, pas de javascript
> -----------------------
> <form action="/AgregPassages/candid.php" method="post">
> <table width="90%">
> <tr>
> <td>Saisie Message</td></tr>
> <tr>
> <td><select NAME="msgType">
> <option VALUE="A.R.">Accus� R�ception
> <option VALUE="M�dical">Motif m�dical
> <option VALUE="Information">Pour Information
> <option VALUE="Report">Demande Report
> <option VALUE="Urgent">Urgent
> <option VALUE="Absence">Absence
> <option VALUE="Retard">Retard
> <option VALUE="Abandon">Abandon
> </select>
> Choisir une cat�gorie. </td></tr>
Ici, aucune option n'est pr�-s�lectionn�e.
J'imagine qu'on obtient msgType="A.R" dans la plupart des cas, mais les
sp�cifications HTML4.0 disent que c'est � l'initiative du navigateur.
Perso, je pr�conise :
<select NAME="msgType">
<option VALUE="" selected>Choisir une cat�gorie</td></tr>
<option VALUE="A.R.">Accus� R�ception
<option VALUE="M�dical">Motif m�dical
<option VALUE="Information">Pour Information
<option VALUE="Report">Demande Report
<option VALUE="Urgent">Urgent
<option VALUE="Absence">Absence
<option VALUE="Retard">Retard
<option VALUE="Abandon">Abandon
</select>
plus du code de validation c�t� serveur (php) et �ventuellement c�t� client
(javascript) qui v�rifie qu'on a bien msgtype != "" avant d'enregistrer.
> <tr>
> <td><textarea ROWS="7" COLS="70" name="inMessage"></textarea></td></tr>
> </table>
> <input type="hidden" name="etape" value="Message"><input type="hidden"
> name="inMsgNum" value="0"><center><input type="submit" name="envoiMessage"
> value="Envoi du Message"></center></form><a NAME="histoire">
> <table width="90%">
> <tr>
> <td BGCOLOR="WHITE"> <font COLOR="RED"><b>Historique</b></font></td> </tr>
> </table>
> L'historique des communications entre vous-m�me et le jury est conserv�
> ci-dessous.
> Attention, le jury ne r�pond � travers cette page qu'aux questions
> concernant les
> horaires des �preuves orales. Les refus de modifier les horaires lorsque
> la situation
> ne le justifie pas ne seront pas motiv�s.
> <p> <p><table width="90%">
> <tr>
> <td BGCOLOR="WHITE"> <font COLOR="RED"><b>Emis le</b></font></td> <td
> BGCOLOR="WHITE"> <font COLOR="RED"><b>Sens</b></font></td> <td
> BGCOLOR="WHITE"> <font COLOR="RED"><b>Type</b></font></td> </tr>
>
> <tr>
> ----------------------------------
> Ce qu'il y a de supprenant est qu'il n'y avait aucun message d'enregistr�,
> le code php est le suivant:
>
> -------------------------------
> if ( $msgNextNum > $_POST['inMsgNum'] ){
> $formule_validation=1;
Je ne comprends pas tr�s bien, on dirait tu as effectivement du code qui v�rifie
le formulaire.
J'imagine que dans le php qui g�n�re la page du formulaire tu as :
<input type="hidden" name="inMsgNum" value="<%=$msgNextNum %>">
et que tu v�rifies donc que l'utilisateur n'est pas remont� dans l'historique
pour soumettre le formulaire.
Attention, �a suppose qu'il n'a pas r�cup�r� une page d'une session pr�c�dente
(voir la fin du message).
> }else{
> // recuperer le message, le placer dans la base de donnees
> if($_POST['etape'] =="Message" ){
>
> $resultat=IntroduireMessageBD($sessnum,$_POST['inMessage'],$_POST['msgTyp
> e']);
Si on veut tracer un minimum, il manque :
if ( ! $resultat ) {
// on laisse une trace et on renvoie un message d'erreur
}
> $msgNextNum++;
> }
> }
> --------------------------------
> Deux soup�ons: Une histoire de session et une histoire de test sur
> $_POST['inMsgNum'] mais je s�che car je n'arrive pas � reproduire le
> ph�nom�ne.
Il y a deux fa�ons pour le serveur de g�rer une session, par un cookie, mais il
faut que le navigateur les supporte et les autorise, et par l'url.
Normalement, le serveur est sens� d�tecter la m�thode � adopter.
Essaie en param�trant IE pour refuser les cookies.
Il faudrait aussi v�rifier l'initialisation de msgNextNum. Que se passe-t-il
si la session de l'utilisateur tombe entre le moment o� il charge la page et le
moment o� il soumet le formulaire ?
L�o.