Contrôler l'historique du navigateur

Contrôler l'historique du navigateur - HTML/CSS - Programmation

Marsh Posté le 19-03-2008 à 11:07:46    

Bonjour
voici mon problème,
disons que je suis sur une page d'un formulaire.
Je remplis mon formulaire et je le POST. Une fois le formulaire enregistré, je bascule sur une autre page.
Le souci c'est que si je fait retour en arrière avec le navigateur, je retombe sur la page avec le Post du formulaire. Donc si l'utilisateur accepte le poste, ben il va y avoir une nouvelle inscription.
 
Moi ce que je voudrais, c'est soit pas enregistrer dans l'historique du navigateur  la page où il y a le traitement du post, soit pouvoir faire croire que c'est une autre page dans l'historique.
 
Bon j'espere que vous m'avez compris, car c'est pas evident à expliquer.

Reply

Marsh Posté le 19-03-2008 à 11:07:46   

Reply

Marsh Posté le 19-03-2008 à 11:24:29    

Je ne pense pas que ce soit bidouillable si facilement. Et surtout le navigateur doit pouvoir décider de ne pas tenir compte de ton bidouillage à ce niveau.
Le mieux c'est a priori de fournir dans tes pages un moyen de naviguer sur ton site qui rend les boutons précédent/suivant du navigateur peu/pas utiles.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 19-03-2008 à 11:27:19    

ok ben je pense que je vais faire ca,  de toute facon j'ai pas trop le choix sinon ca va vite devenir la merde

Reply

Marsh Posté le 19-03-2008 à 11:35:28    

infoman64 a écrit :

Le souci c'est que si je fait retour en arrière avec le navigateur, je retombe sur la page avec le Post du formulaire. Donc si l'utilisateur accepte le poste, ben il va y avoir une nouvelle inscription.

 

Si c'est pour une inscription, t'as juste à tester si le nom d'utilisateur ou l'adresse email est déjà enregistrée (sachant que si tu veux qu'ils soient uniques, faut de toutes façons l'indiquer dans ta base de donnée, pour l'optimiser). Si l'utilisateur envoie le formulaire une deuxième fois, réponds-lui simplement que le nom d'utilisateur ou l'adresse email existe déjà, et qu'il a peut-être envoyé deux fois le formulaire, c'est à dire qu'il vient déjà de s'inscrire.

 

Pour les autres formulaires, rajoute un identifiant (ou un nombre aléatoire quelconque, long) dans un input caché, pour identifier l'instance du formulaire. Quand une personne envoie le formulaire, enregistre cet identifiant, avec les autres données du formulaire. À chaque réception de formulaire, regarde si l'identifiant a déjà été enregistré, et si oui, compare les données envoyées (au cas où l'utilisateur utilise le même formulaire, mais après avoir changé les données -pour envoyer un autre message, par exemple). Si les données sont les mêmes, réponds que l'utilisateur essaie d'envoyer deux fois le même formulaire, c'est à dire que son message a déjà été envoyé et accepté.

 

[Edit: À noter que certains pourraient aussi envoyer des messages un peu différents (genre correction de fautes de frappe, ou rajout de quelques trucs...), en pensant que leur premier message n'a pas été reçu, ou qu'ils pourront le modifier comme ça... enfin après, on peut faire énormément de choses, pour parrer à toute éventualité, mais bon...]

 

Si vraiment tu veux utiliser JavaScript, récupère les données du formulaire, en utilisant l'attribut onsubmit, et envoie toi-même le formulaire avec JavaScript (du AJAX, quoi). Ensuite, renvoit false, pour que le formulaire ne soit pas envoyé par le navigateur, puis confirme à l'utilisateur que le formulaire a bien été reçu, et réinitialise le formulaire. Et si tu veux, termine par rediriger l'utilisateur vers une autre page (ou vers une page de confirmation, si tu préfères lui confirmer la réception du formulaire, sur une autre page).

 

Enfin si l'utilisateur a désactivé JavaScript (y compris avec NoScript), ou utilise un navigateur qui ne supporte pas JavaScript, tu retrouveras les mêmes problèmes.

 

Tu peux pas manipuler l'historique, avec JavaScript. Tu peux juste naviguer dans l'historique, à l'aveugle, en utilisant la position de la page dans l'historique, ou en utilisant tout ou partie de l'adresse de la page à revisiter.


Message édité par Ekuryua le 19-03-2008 à 14:42:09
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed