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>
> &nbsp; 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>&nbsp;<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.

Répondre à