IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Retour sur une page qui s'exécute une deuxième fois


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 227
    Points : 77
    Points
    77
    Par défaut Retour sur une page qui s'exécute une deuxième fois
    Bonjour.
    Pour simplifier, j'ai écrit une page HTML qui contient un script qui, grâce aux données passées dans l'URL et la méthode GET, ajoute une valeur dans un tableau. Le problème, c'est que si on va sur une autre page et qu'on revient sur celle-là avec le bouton Retour du navigateur, la même valeur est à nouveau ajoutée dans le tableau.
    C'est un exemple simplifié par rapport à ce que je fais.
    Comment gère-t-on ce genre de problème?
    Merci.

  2. #2
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Le boutton retour sur une page obtenue en POST (généralement un envoi de formulaire) provoque le renvoi des données. Pour contourner le problème, il suffit de mettre en place une redirection GET.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Location: www.tosite.com/une_page.php');

  3. #3
    Membre actif Avatar de Retrokiller069
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2010
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2010
    Messages : 217
    Points : 296
    Points
    296
    Par défaut
    Bonjour,

    si tu n'as jamais besoin de récupérer la valeur (je parle sur la page de ton formulaire) tu pourrais par exemple utiliser un fonction javacript qui initialise toutes tes variables de ton formulaire à vide.

    Regarde du coté de document.onload, il me semble que cela permet d'exécuter du javascript lorsque la page est généré. Je ne suis pas sur à 100% mais cela devrait te résoudre ton problème.
    Ce n'est pas ce que nous voulons faire qui est impossible mais ce sont les moyens à sa mise en oeuvre qui peuvent le paraître

    Ps: N'oubliez pas SVP

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 227
    Points : 77
    Points
    77
    Par défaut
    Merci pour vos réponses.
    En fait il ne s'agit pas d'un formulaire. Voici l'URL de ma page (pour l'instant, tout est en local):
    messageComparaison.php?action=ajouter&identifiantObjetComparaison=1
    Dans la page, j'ai écrit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $action=htmlspecialchars($_GET['action']);
    $identifiantObjetComparaison=htmlspecialchars($_GET['identifiantObjetComparaison']);
    if($action==="ajouter") {...
    Dans les..., j'ajoute identifiantObjetComparaison à la fin d'un tableau.
    Donc si je vais ensuite sur une autre page et que je reviens avec le bouton Retour du navigateur, le code est exécuté à nouveau et donc je me retrouve avec deux fois identifiantObjetComparaison dans mon tableau.
    Evidemment, je pourrais tester s'il n'est pas déjà dans le tableau avant de l'ajouter mais je me demandais si il n'y avait pas une meilleure méthode.
    PS: je préférerais éviter le javascript.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 227
    Points : 77
    Points
    77
    Par défaut
    Finalement, j'ai testé si identifiantObjetComparaison n'est pas déjà dans le tableau avant de l'ajouter pour éviter les erreurs.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Droits pour exécuter une vue qui pointe vers une autre base ?
    Par fredg9 dans le forum Administration
    Réponses: 3
    Dernier message: 08/11/2012, 13h21
  2. excuter une fonction au chargement d'une page
    Par xess91 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 04/12/2009, 20h11
  3. Réponses: 1
    Dernier message: 26/02/2007, 09h44
  4. Couleur de fond d’un page qui n’est pas une page mais juste
    Par Furius dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 12/01/2006, 17h16
  5. inserer une page php externe dans une page JSP
    Par vrossi59 dans le forum Servlets/JSP
    Réponses: 11
    Dernier message: 05/07/2005, 16h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo