probleme de document.location en sens unique - PRECEDENT
3 réponses
dominique
Bonjour,
Je vous fais part du probleme suivant :
1. L'utilisateur saisit un formulaire formu.html et le valide.
2. Le formulaire pointe sur un fichier traitement.php, qui met à jour
une base, puis fait un document.location sur ma page de formulaire, de
facon à ce que l'utilisateur puisse voir les données mise à jour.
3. Le probleme, c'est que si l'utilisateur clique sur le bouton
PRECEDENT du navigateur, il arrive à nouveau sur la page traitement.php
qui le renvoie à nouveau sur la page du formulaire.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Eric
Bonjour,
Je vous fais part du probleme suivant :
1. L'utilisateur saisit un formulaire formu.html et le valide. 2. Le formulaire pointe sur un fichier traitement.php, qui met à jour une base, puis fait un document.location sur ma page de formulaire, de facon à ce que l'utilisateur puisse voir les données mise à jour. 3. Le probleme, c'est que si l'utilisateur clique sur le bouton PRECEDENT du navigateur, il arrive à nouveau sur la page traitement.php qui le renvoie à nouveau sur la page du formulaire.
Comment faire pour éviter ceci. Merci
Il y a pas mal d'écoles qui s'affrontent (aucune n'uitlise le javascript d'ailleurs).
La mienne, c'est le header HTTP, tu mets dans ton code PHP :
header('location:http://www.monsite.com/merci.html'); -ou- header('location:merci.html'); (la seconde ligne n'est pas conforme aux normes, mais bien respectée par les navigteurs et plus pratique)
Avec cette méthode, pas de problème avec le bouton précédent, suivant, actualiser, mais problème en cas de double clic sur le bouton envoi.
Pour gérer le doubleclic, tu peux envoyer dans le formulaire un numéro unique (une clé primaire ?), valable qu'une fois. La première fois, la personne clique sur le bouton envoyer et donne son numéro unique, l'insertion est faite dans la BDD. La personne s'impatiente, clique sur le même bouton envoyer, retourne le même numéro à usage unique, le numéro est expiré.
Pour moi, la protection idéale cosiste donc en numéro unique + header http.
Bonjour,
Je vous fais part du probleme suivant :
1. L'utilisateur saisit un formulaire formu.html et le valide.
2. Le formulaire pointe sur un fichier traitement.php, qui met à jour
une base, puis fait un document.location sur ma page de formulaire, de
facon à ce que l'utilisateur puisse voir les données mise à jour.
3. Le probleme, c'est que si l'utilisateur clique sur le bouton
PRECEDENT du navigateur, il arrive à nouveau sur la page traitement.php
qui le renvoie à nouveau sur la page du formulaire.
Comment faire pour éviter ceci. Merci
Il y a pas mal d'écoles qui s'affrontent (aucune n'uitlise le
javascript d'ailleurs).
La mienne, c'est le header HTTP, tu mets dans ton code PHP :
header('location:http://www.monsite.com/merci.html');
-ou-
header('location:merci.html');
(la seconde ligne n'est pas conforme aux normes, mais bien respectée
par les navigteurs et plus pratique)
Avec cette méthode, pas de problème avec le bouton précédent,
suivant, actualiser, mais problème en cas de double clic sur le bouton
envoi.
Pour gérer le doubleclic, tu peux envoyer dans le formulaire un
numéro unique (une clé primaire ?), valable qu'une fois. La première
fois, la personne clique sur le bouton envoyer et donne son numéro
unique, l'insertion est faite dans la BDD. La personne s'impatiente,
clique sur le même bouton envoyer, retourne le même numéro à usage
unique, le numéro est expiré.
Pour moi, la protection idéale cosiste donc en numéro unique + header
http.
1. L'utilisateur saisit un formulaire formu.html et le valide. 2. Le formulaire pointe sur un fichier traitement.php, qui met à jour une base, puis fait un document.location sur ma page de formulaire, de facon à ce que l'utilisateur puisse voir les données mise à jour. 3. Le probleme, c'est que si l'utilisateur clique sur le bouton PRECEDENT du navigateur, il arrive à nouveau sur la page traitement.php qui le renvoie à nouveau sur la page du formulaire.
Comment faire pour éviter ceci. Merci
Il y a pas mal d'écoles qui s'affrontent (aucune n'uitlise le javascript d'ailleurs).
La mienne, c'est le header HTTP, tu mets dans ton code PHP :
header('location:http://www.monsite.com/merci.html'); -ou- header('location:merci.html'); (la seconde ligne n'est pas conforme aux normes, mais bien respectée par les navigteurs et plus pratique)
Avec cette méthode, pas de problème avec le bouton précédent, suivant, actualiser, mais problème en cas de double clic sur le bouton envoi.
Pour gérer le doubleclic, tu peux envoyer dans le formulaire un numéro unique (une clé primaire ?), valable qu'une fois. La première fois, la personne clique sur le bouton envoyer et donne son numéro unique, l'insertion est faite dans la BDD. La personne s'impatiente, clique sur le même bouton envoyer, retourne le même numéro à usage unique, le numéro est expiré.
Pour moi, la protection idéale cosiste donc en numéro unique + header http.
O.L.
Bonjour,
Je vous fais part du probleme suivant :
1. L'utilisateur saisit un formulaire formu.html et le valide. 2. Le formulaire pointe sur un fichier traitement.php, qui met à jour une base, puis fait un document.location sur ma page de formulaire, de facon à ce que l'utilisateur puisse voir les données mise à jour. 3. Le probleme, c'est que si l'utilisateur clique sur le bouton PRECEDENT du navigateur, il arrive à nouveau sur la page traitement.php qui le renvoie à nouveau sur la page du formulaire.
Comment faire pour éviter ceci. Merci
Il y a pas mal d'écoles qui s'affrontent (aucune n'uitlise le javascript d'ailleurs).
La mienne, c'est le header HTTP, tu mets dans ton code PHP :
header('location:http://www.monsite.com/merci.html'); -ou- header('location:merci.html'); (la seconde ligne n'est pas conforme aux normes, mais bien respectée par les navigteurs et plus pratique)
Avec cette méthode, pas de problème avec le bouton précédent, suivant, actualiser, mais problème en cas de double clic sur le bouton envoi.
Pour gérer le doubleclic, tu peux envoyer dans le formulaire un numéro unique (une clé primaire ?), valable qu'une fois. La première fois, la personne clique sur le bouton envoyer et donne son numéro unique, l'insertion est faite dans la BDD. La personne s'impatiente, clique sur le même bouton envoyer, retourne le même numéro à usage unique, le numéro est expiré.
Pour moi, la protection idéale cosiste donc en numéro unique + header http.
Et aussi tant qu'à faire je mettrais bien une protection pour éviter le double clic sur le bouton, même si c'est en JavaScript donc contournable et carrément inutile si l'utilisateur a désactivé JS :
-- Olivier Ligny Créateur web free-lance / www.cyber-tamtam.net
Bonjour,
Je vous fais part du probleme suivant :
1. L'utilisateur saisit un formulaire formu.html et le valide.
2. Le formulaire pointe sur un fichier traitement.php, qui met à jour
une base, puis fait un document.location sur ma page de formulaire, de
facon à ce que l'utilisateur puisse voir les données mise à jour.
3. Le probleme, c'est que si l'utilisateur clique sur le bouton
PRECEDENT du navigateur, il arrive à nouveau sur la page traitement.php
qui le renvoie à nouveau sur la page du formulaire.
Comment faire pour éviter ceci. Merci
Il y a pas mal d'écoles qui s'affrontent (aucune n'uitlise le
javascript d'ailleurs).
La mienne, c'est le header HTTP, tu mets dans ton code PHP :
header('location:http://www.monsite.com/merci.html');
-ou-
header('location:merci.html');
(la seconde ligne n'est pas conforme aux normes, mais bien respectée
par les navigteurs et plus pratique)
Avec cette méthode, pas de problème avec le bouton précédent,
suivant, actualiser, mais problème en cas de double clic sur le bouton
envoi.
Pour gérer le doubleclic, tu peux envoyer dans le formulaire un
numéro unique (une clé primaire ?), valable qu'une fois. La première
fois, la personne clique sur le bouton envoyer et donne son numéro
unique, l'insertion est faite dans la BDD. La personne s'impatiente,
clique sur le même bouton envoyer, retourne le même numéro à usage
unique, le numéro est expiré.
Pour moi, la protection idéale cosiste donc en numéro unique + header
http.
Et aussi tant qu'à faire je mettrais bien une protection pour éviter le
double clic sur le bouton, même si c'est en JavaScript donc
contournable et carrément inutile si l'utilisateur a désactivé JS :
1. L'utilisateur saisit un formulaire formu.html et le valide. 2. Le formulaire pointe sur un fichier traitement.php, qui met à jour une base, puis fait un document.location sur ma page de formulaire, de facon à ce que l'utilisateur puisse voir les données mise à jour. 3. Le probleme, c'est que si l'utilisateur clique sur le bouton PRECEDENT du navigateur, il arrive à nouveau sur la page traitement.php qui le renvoie à nouveau sur la page du formulaire.
Comment faire pour éviter ceci. Merci
Il y a pas mal d'écoles qui s'affrontent (aucune n'uitlise le javascript d'ailleurs).
La mienne, c'est le header HTTP, tu mets dans ton code PHP :
header('location:http://www.monsite.com/merci.html'); -ou- header('location:merci.html'); (la seconde ligne n'est pas conforme aux normes, mais bien respectée par les navigteurs et plus pratique)
Avec cette méthode, pas de problème avec le bouton précédent, suivant, actualiser, mais problème en cas de double clic sur le bouton envoi.
Pour gérer le doubleclic, tu peux envoyer dans le formulaire un numéro unique (une clé primaire ?), valable qu'une fois. La première fois, la personne clique sur le bouton envoyer et donne son numéro unique, l'insertion est faite dans la BDD. La personne s'impatiente, clique sur le même bouton envoyer, retourne le même numéro à usage unique, le numéro est expiré.
Pour moi, la protection idéale cosiste donc en numéro unique + header http.
Et aussi tant qu'à faire je mettrais bien une protection pour éviter le double clic sur le bouton, même si c'est en JavaScript donc contournable et carrément inutile si l'utilisateur a désactivé JS :
-- Olivier Ligny Créateur web free-lance / www.cyber-tamtam.net
Olivier Miakinen
1. L'utilisateur saisit un formulaire formu.html et le valide.
Bien.
2. Le formulaire pointe sur un fichier traitement.php, qui met à jour une base, puis fait un document.location sur ma page de formulaire, de facon à ce que l'utilisateur puisse voir les données mise à jour.
Je n'ai pas tout compris ici (document.location)... Si c'est une redirection du style "Location: http://example.com/truc", il vaut mieux l'éviter puisque ton fichier .php devrait pouvoir afficher le résultat sans aller-retour inutile. C'est encore pire avec "Location: truc".
3. Le probleme, c'est que si l'utilisateur clique sur le bouton PRECEDENT du navigateur, il arrive à nouveau sur la page traitement.php qui le renvoie à nouveau sur la page du formulaire.
La question à se poser est « en quoi est-ce un problème ? » et la réponse la plus fréquente semble être « parce que j'utilise un champ en autoincrément comme clé de ma base ». Arrivé ici, il est temps de repenser l'architecture de sa base pour utiliser une vraie clé unique. Ainsi, le visiteur peut revenir en arrière autant qu'il le voudra, il peut même envoyer 800 exemplaires de formulaire, tu seras protégé du fait que la clé unique interdira de faire 800 créations identiques.
Comment faire pour éviter ceci. Merci
1) ne pas utiliser de clé en auto-incrément 2) ne pas faire de header("Location: http://example.com/truc"); 3) ne surtout pas faire de header("Location: truc"); 4) lire John Gallet sur fr.comp.lang.php : <http://groups.google.fr/groups/search?q=%22machine+%C3%A0+laver%22+author%3Ajohn+author%3Agallet>
1. L'utilisateur saisit un formulaire formu.html et le valide.
Bien.
2. Le formulaire pointe sur un fichier traitement.php, qui met à jour
une base, puis fait un document.location sur ma page de formulaire, de
facon à ce que l'utilisateur puisse voir les données mise à jour.
Je n'ai pas tout compris ici (document.location)... Si c'est une
redirection du style "Location: http://example.com/truc", il vaut mieux
l'éviter puisque ton fichier .php devrait pouvoir afficher le résultat
sans aller-retour inutile. C'est encore pire avec "Location: truc".
3. Le probleme, c'est que si l'utilisateur clique sur le bouton
PRECEDENT du navigateur, il arrive à nouveau sur la page traitement.php
qui le renvoie à nouveau sur la page du formulaire.
La question à se poser est « en quoi est-ce un problème ? » et la
réponse la plus fréquente semble être « parce que j'utilise un champ
en autoincrément comme clé de ma base ». Arrivé ici, il est temps de
repenser l'architecture de sa base pour utiliser une vraie clé unique.
Ainsi, le visiteur peut revenir en arrière autant qu'il le voudra, il
peut même envoyer 800 exemplaires de formulaire, tu seras protégé du
fait que la clé unique interdira de faire 800 créations identiques.
Comment faire pour éviter ceci. Merci
1) ne pas utiliser de clé en auto-incrément
2) ne pas faire de header("Location: http://example.com/truc");
3) ne surtout pas faire de header("Location: truc");
4) lire John Gallet sur fr.comp.lang.php :
<http://groups.google.fr/groups/search?q=%22machine+%C3%A0+laver%22+author%3Ajohn+author%3Agallet>
1. L'utilisateur saisit un formulaire formu.html et le valide.
Bien.
2. Le formulaire pointe sur un fichier traitement.php, qui met à jour une base, puis fait un document.location sur ma page de formulaire, de facon à ce que l'utilisateur puisse voir les données mise à jour.
Je n'ai pas tout compris ici (document.location)... Si c'est une redirection du style "Location: http://example.com/truc", il vaut mieux l'éviter puisque ton fichier .php devrait pouvoir afficher le résultat sans aller-retour inutile. C'est encore pire avec "Location: truc".
3. Le probleme, c'est que si l'utilisateur clique sur le bouton PRECEDENT du navigateur, il arrive à nouveau sur la page traitement.php qui le renvoie à nouveau sur la page du formulaire.
La question à se poser est « en quoi est-ce un problème ? » et la réponse la plus fréquente semble être « parce que j'utilise un champ en autoincrément comme clé de ma base ». Arrivé ici, il est temps de repenser l'architecture de sa base pour utiliser une vraie clé unique. Ainsi, le visiteur peut revenir en arrière autant qu'il le voudra, il peut même envoyer 800 exemplaires de formulaire, tu seras protégé du fait que la clé unique interdira de faire 800 créations identiques.
Comment faire pour éviter ceci. Merci
1) ne pas utiliser de clé en auto-incrément 2) ne pas faire de header("Location: http://example.com/truc"); 3) ne surtout pas faire de header("Location: truc"); 4) lire John Gallet sur fr.comp.lang.php : <http://groups.google.fr/groups/search?q=%22machine+%C3%A0+laver%22+author%3Ajohn+author%3Agallet>