0 votes

Comment coder correctement les formulaires html temporisés, comme ceux que vous rencontrez lorsque vous faites des tests en ligne, en utilisant PHP, MySQL, HTML, CSS et JavaScript ?

En d'autres termes, quelle technologie se chargerait de faire le suivi du temps ? Serait-ce le JavaScript ? Je ne vois pas comment on pourrait assurer le suivi de telles choses avec PHP.

Voici ce que je dois accomplir :

  • J'ai besoin d'un long formulaire qui nécessite de nombreux rechargements de pages Web, car il s'agit en fait d'un test en ligne où chaque chargement de page affiche une nouvelle question. Cependant, l'ensemble du formulaire, qui constitue un test, est limité dans le temps. À l'expiration de ce délai, si l'utilisateur en question n'a pas terminé le test, il ne peut pas soumettre un test partiellement terminé ni tenter de refaire l'ensemble du test dans la même journée (soit à la date du calendrier, soit avec un intervalle de 12/24 heures). Je sais que j'ai ajouté beaucoup de détails et que je l'ai fait juste pour montrer le contexte, néanmoins, la principale difficulté pour moi serait de savoir comment réaliser la fonction d'expiration du temps. C'est-à-dire que, d'une manière ou d'une autre, dans une série de pages qui constituent un formulaire représentant un test en ligne, je veux suivre le temps à partir de la première question (un chargement de page) et à l'expiration du temps pour que le test soit désactivé.

Quelqu'un l'a-t-il déjà fait ? Quelqu'un aurait-il des conseils à me donner sur la façon de le faire ? Tout conseil que je pourrais obtenir serait apprécié à l'avance.

2voto

Yuval Adam Points 59423

Si vous suivez le temps sur le côté client - toujours le valider du côté du serveur .

Ne faites jamais confiance au client, par lui-même, pour valider l'heure. Comme mentionné dans les commentaires, la validation de l'heure côté client n'est bonne que pour des fonctionnalités cosmétiques, jamais pour une validation réelle.

Le moyen le plus simple d'y parvenir est d'ajouter un jeton unique au formulaire (qui ne peut être usurpé) lors de la première navigation. Les cookies, ou tout autre type de technique de gestion de session que vous obtenez de votre framework, suffiront.

Lors de la soumission du formulaire, vous pouvez d'abord valider cette information côté client et renvoyer une erreur si le temps s'est écoulé, avant même d'envoyer le formulaire. En cas de succès, soumettez le formulaire et veillez à valider le jeton lors du traitement sur le serveur.

1voto

PlagueEditor Points 366

Il y a deux façons de mesurer le "temps passé" sur le formulaire.

  1. Lorsque la première page du formulaire est coupée, dans le PHP créez une variable de session contenant la date. Lorsqu'ils terminent le formulaire, vous soustrayez la date actuelle de la date de début. Vous obtenez ainsi le temps total écoulé entre le moment où le formulaire a été servi et celui où il a été terminé. Toutefois, cette méthode n'est pas précise à 100 %, car il peut y avoir des temps d'arrêt pour d'autres raisons, comme un Internet lent.
  2. Vous pourriez faire en sorte que JavaScript enregistre l'heure sur cette page (j'ai répondu à la question sur la façon de le faire ici : aquí ) En utilisant AJAX, ce temps pourrait être envoyé de cette façon ou en utilisant les messages GET. L'heure serait ensuite conservée par PHP d'une manière ou d'une autre et additionnée à la fin.

J'espère que cela vous aidera ! N'hésitez pas à demander si vous voulez un exemple.

1voto

Ken Redler Points 15204

Dans les termes les plus généraux, vous devrez configurer une session côté serveur pour suivre chaque utilisateur et chaque test. Lorsque l'utilisateur commence le test, vous tamponnez une variable (côté serveur) avec l'heure de début du test. Au fur et à mesure que l'utilisateur progresse dans le test et demande des pages supplémentaires, vérifiez si la différence entre l'heure actuelle et cette variable a dépassé le temps imparti pour le test. Si le test a expiré, au lieu d'envoyer la page de test suivante, vous pouvez fermer le test et envoyer une page "time's up" à l'utilisateur.

Je ne sais pas quel environnement côté serveur vous utilisez, mais il est presque certain qu'il dispose d'une sorte de cadre de gestion de session. Pour contrôler de manière fiable l'environnement de test, vous devez gérer cela depuis le côté serveur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X