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 :

[Cookies] Suppression avec touche retour du navigateur


Sujet :

Langage PHP

  1. #1
    Membre averti Avatar de mussara
    Inscrit en
    Novembre 2004
    Messages
    442
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2004
    Messages : 442
    Points : 348
    Points
    348
    Par défaut [Cookies] Suppression avec touche retour du navigateur
    bonjour à tous

    j'ai un petit souci avec les cookies... lorsque l'utilisateur utilise le bouton retour du navigateur

    j'ai un formulaire lambda qui à l'init supprime un cookie et après validation créée un cookie

    si l'utilisateur utilise le bouton de retour de son navigateur (après avoir validé le formulaire), la suppression du cookie n'est pas effectuée...

    ai je un moyen de le supprimer????

    merci de votre aide

  2. #2
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    amha il faut que tu forces le recalcul de la page. Un truc dans ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            header("Cache-Control: no-store, no-cache, must-revalidate"); // HTTP/1.1
            header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past

  3. #3
    Membre averti Avatar de mussara
    Inscrit en
    Novembre 2004
    Messages
    442
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2004
    Messages : 442
    Points : 348
    Points
    348
    Par défaut
    le header est lu dans le cas d'un retour à page précédente via le navigateur???

  4. #4
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    essaie

  5. #5
    Membre averti Avatar de mussara
    Inscrit en
    Novembre 2004
    Messages
    442
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2004
    Messages : 442
    Points : 348
    Points
    348
    Par défaut
    malheureusement ça ne fonctionne pas, mes cookies ne sont pas vidés...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    header("Cache-Control: no-cache, must-revalidate");
    header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
    setcookie("champ_tri","");
    setcookie("desc_asc","");
    setcookie("requete","");

  6. #6
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Ok.

    Quel est le code correspondant à ceci :
    Citation Envoyé par mussara
    qui à l'init supprime un cookie et après validation créée un cookie

  7. #7
    Membre averti Avatar de mussara
    Inscrit en
    Novembre 2004
    Messages
    442
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2004
    Messages : 442
    Points : 348
    Points
    348
    Par défaut
    ma page où s'affiche le formulaire et qui met à vide les éventuels cookies débute par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
    setcookie("champ_tri","");
    setcookie("desc_asc","");
    setcookie("requete","");
    au clic sur le bouton valider je lance mon script qui va me générer le type de requête avec un affichage page par page:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    ....
    if (isset($_COOKIE['champ_tri'])) {$champ_tri=$_COOKIE['champ_tri'];/*echo "le cookie champ_tri est:".$champ_tri;*/}
    if (isset($_COOKIE['desc_asc'])) {$desc_asc=$_COOKIE['desc_asc'];/*echo "le cookie des_asc est:".$desc_asc;*/}
    if (isset($_COOKIE['requete'])) {$requete=$_COOKIE['requete'];/*echo "le cookie requete est:".$requete;*/}
    ....
    $sql =	"SELECT * from ".$table_artistes." WHERE ($requete )
    	ORDER BY $champ_tri $desc_asc
    	LIMIT ".$_GET['debut'].",".$nb_affichage_par_page."
    	";//echo $sql."<br/>";
    if (!isset($_COOKIE['champ_tri'])) {setcookie("champ_tri",$champ_tri,time()+360);}
    if (!isset($_COOKIE['desc_asc'])) {setcookie("desc_asc",$desc_asc,time()+360);}
    if (!isset($_COOKIE['requete'])) {setcookie("requete",$requete,time()+360);}
    du coup ça me conserve mes cookies bien placés à l'affichage page par page

    mais mon problème c'est le fameux page précédente du navigateur...

  8. #8
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    essaie de remplacer le header "expires" par

  9. #9
    Membre averti Avatar de mussara
    Inscrit en
    Novembre 2004
    Messages
    442
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2004
    Messages : 442
    Points : 348
    Points
    348
    Par défaut
    bon je suis en train de retester tout mais ta solution est en effet la bonne (avec le cache qui expire à une date passée)

    le problème que j'avais était lié à un mauvais passage de variables après mon formulaire (je les récupérais mal à cause d'un register-globals à ON trop permissif et qui ne me montrait pas le problème)

    en fait c'est le navigateur Opéra qui m'a mis la puce à l'oreille (en + de ton avis) car d'autres choses ne fonctionnaient pas correctement...

    du coup un grand merci (mais mon sommeil en a pris un coup cette nuit...)


  10. #10
    Membre averti Avatar de mussara
    Inscrit en
    Novembre 2004
    Messages
    442
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2004
    Messages : 442
    Points : 348
    Points
    348
    Par défaut
    ... mon code semble fonctionner sous IE et sous FF mais pas sous Opéra de nouveau... donc je suppose que doit trainer une erreur ou un enchainement qui ne va pas...
    je ne m'en sors pas...

    je vous mets le code ci-dessous, car peut être qu'une erreur flagrante vous sautera aux yeux....

    l'enchainement est:
    recherche_artistes.php (qui contient le formulaire de formulaire_recherche_artistes_simple.inc.php)
    une fois cliqué sur le bouton valider ça m'ouvre après POST des variables la page de listage des résultats fiche_artistes_rechercher.php (contenant l'include de ma page de requete:requete_recherche_coordonnes.inc.php)

    j'espère que c'est clair... pour le code il n'est pas encore factorisé (et peut être qu'heureusement)



    si quelqu'un a de meilleurs yeux que moi...

  11. #11
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Ca c'est pas sympa de nous filer tout ton code en pleine digestion ^^

    Il faut apprendre à isoler un problème du contexte. Tu as un problème de cookie ? alors ne travaille que sur les cookies, pas de formulaire, rien, juste des cookies.

    Par exemple, je crée deux fichiers :
    test.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
     
    setcookie('mussara' ,'');
    header("Cache-Control: no-store, no-cache, must-revalidate"); // HTTP/1.1
    header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past
     
    ?>
    <script>
    document.write('Cookie = '+document.cookie);
    </script>
    <br />
    <a href="test2.php">test2.php</a>
    et test2.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
     
    setcookie('mussara' ,'coucou');
     
    ?>
    <script>
    document.write('Cookie = '+document.cookie);
    </script>
    Ces deux fichiers sont très simple et isole le problème.
    Le premier script :
    - vide le cookie 'mussara'
    - oblige la page à etre rafraichie
    - affiche le contenu du cookie via javascript

    Le deuxième script
    - stocke la chaine 'coucou' dans le cookie 'mussara'
    - affiche le contenu du cookie via javascript

    Je lance dans mon navigateur (Firefox) test.php
    -> le cookie est vide
    je clique sur le lien (c'est comme si j'avais soumis le formulaire)
    -> le cookie est rempli
    je fais [back] dans le navigateur
    -> le cookie est vide car la page a été rafraichie.

    Maintenant si je mets en commentaire les header(), alors le cookie ne sera pas vidé quand je clique sur [back] du navigateur... c'est bien ce que tu veux ?
    Est ce que ces deux scripts ont le même comportement sur tes différents navigateurs ?

    Une fois que c'est bon, alors tu commence à integrer petit à petit ton code afin de voir là où ça cloche...

  12. #12
    Membre averti Avatar de mussara
    Inscrit en
    Novembre 2004
    Messages
    442
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2004
    Messages : 442
    Points : 348
    Points
    348
    Par défaut
    désolé pour la malencontreuse ingestion pendant la digestion

    sinon pour ton script en effet ça marche bien sous tous les navigateurs
    je dois avoir une coquille qui traine qqpart dans mon code

    je vais reprocéder étape par étape

    merci

    je vous tiens au courant de la suite...

  13. #13
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Sinon, la solution de contournement, c'est de ne pas utiliser de cookie

  14. #14
    Membre averti Avatar de mussara
    Inscrit en
    Novembre 2004
    Messages
    442
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2004
    Messages : 442
    Points : 348
    Points
    348
    Par défaut
    mais je suis obligé, non?, car dans le cadre de l'affichage page par page qui est proposé ma requete perd sinon ses variables...

    quand tu dis ne pas utiliser de cookies, je suppose que tu ne me dis pas + d'utiliser de variables de sessions???

    quel pourrait être l'éventuel contournement? car dans ma page de requete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $sql =	"SELECT * from ".$table_artistes." WHERE (
    			$requete )
    			ORDER BY $champ_tri $desc_asc
    			LIMIT ".$_GET['debut'].",".$nb_affichage_par_page."
    			";//echo $sql."<br/>";
    j'ai mes variables requete, champ_tri et desc_asc qui ne sont plus initailisées si je passe d'une page à l'autre....

  15. #15
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Personnelement j'évite autant que faire se peut l'utilisation des cookies.
    Pour passer des variables d'une page à une autre :
    - via la méthode get ou post
    - via la session

  16. #16
    Membre averti Avatar de mussara
    Inscrit en
    Novembre 2004
    Messages
    442
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2004
    Messages : 442
    Points : 348
    Points
    348
    Par défaut
    bon ton exemple m'a beaucoup servi à mettre de l'ordre dans mes enchainements

    tout semble fonctionner à merveille désormais... même sous Opéra

    un grand merci pour ta disponibilité

    amicalement

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 12/02/2013, 01h08
  2. [Cookies] sessions avec le navigateur AOL
    Par tenere3 dans le forum Langage
    Réponses: 4
    Dernier message: 09/06/2007, 08h46
  3. Réponses: 1
    Dernier message: 15/05/2007, 17h31
  4. Requete de suppression avec en condition une date
    Par PrinceMaster77 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 29/04/2004, 09h23
  5. suppression avec sous requête conditionnelle
    Par melmel dans le forum Requêtes
    Réponses: 8
    Dernier message: 18/03/2004, 23h20

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