JeuWeb - Crée ton jeu par navigateur
formulaire et double clique - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : formulaire et double clique (/showthread.php?tid=5076)

Pages : 1 2 3


RE: formulaire et double clique - php_addict - 12-08-2010

(12-08-2010, 06:12 PM)Sephi-Chan a écrit : En effet, ce n'est pas le rôle du token.
En revanche, le timestamp fonctionne puisque la variable de session est définie par le script de la page d'action. Donc au premier clic, la page d'action est chargée, la variable définie (un microtime est sans doute plus adapté). Au second clic, la page d'action est encore servie et le microtome peut être comparé à celui précédemment stocké.
Sephi-Chan

d' où mon erreur certainement: je gérère mon token et mon timestamps lors de l'affichage du formualire. devrais je donc générer le token lors de l'affichage du formulaire et le timestamp dans le script qui gere le formulaire (apres le $_POST donc...) ?

edit: c'est dingue ce que l'on peut se prendre la tête quand on a choisi de ne pas passer par un framework...mon prochain prochain si il y en a un sera avec Wink


RE: formulaire et double clique - Sephi-Chan - 12-08-2010

Quand on utilise un token, on doit le générer, le mettre dans le formulaire et en session et vérifier qu'ils correspondent. Ainsi on s'assure que l'utilisateur est passé par le formulaire, qu'il n'a pas été détourné (attaque CSRF).

Dans notre cas, on veut juste avoir depuis combien de temps une page d'action de formulaire a été atteinte, donc sur chaque page d'action, on calcule la différence entre le microtime du dernier envoi de formulaire et le microtime actuel est important. Si ce nombre est très faible, ça signifie que l'utilisateur a soumis plusieurs formulaire dans un très court intervalle, donc on ne va pas procéder au reste de l'action. Une fois le test effectué, on met à jour la variable de session last_form_submitted_at.


Sephi-Chan