Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/01/2007, 15h47   #1
Membre confirmé
 
Avatar de mussara
 
Inscription : novembre 2004
Messages : 441
Détails du profil
Informations personnelles :
Âge : 44

Informations forums :
Inscription : novembre 2004
Messages : 441
Points : 299
Points : 299
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
mussara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2007, 18h46   #2
Expert Confirmé Sénior
 
Avatar de Mr N.
 
Inscription : septembre 2004
Messages : 5 421
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 421
Points : 5 835
Points : 5 835
amha il faut que tu forces le recalcul de la page. Un truc dans ce genre :
Code :
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
__________________
Get your motor runnin'
Head out on the highway...
Mr N. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2007, 18h50   #3
Membre confirmé
 
Avatar de mussara
 
Inscription : novembre 2004
Messages : 441
Détails du profil
Informations personnelles :
Âge : 44

Informations forums :
Inscription : novembre 2004
Messages : 441
Points : 299
Points : 299
le header est lu dans le cas d'un retour à page précédente via le navigateur???
mussara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2007, 18h54   #4
Expert Confirmé Sénior
 
Avatar de Mr N.
 
Inscription : septembre 2004
Messages : 5 421
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 421
Points : 5 835
Points : 5 835
essaie
__________________
Get your motor runnin'
Head out on the highway...
Mr N. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2007, 18h59   #5
Membre confirmé
 
Avatar de mussara
 
Inscription : novembre 2004
Messages : 441
Détails du profil
Informations personnelles :
Âge : 44

Informations forums :
Inscription : novembre 2004
Messages : 441
Points : 299
Points : 299
malheureusement ça ne fonctionne pas, mes cookies ne sont pas vidés...

Code :
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","");
mussara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2007, 19h25   #6
Expert Confirmé Sénior
 
Avatar de Mr N.
 
Inscription : septembre 2004
Messages : 5 421
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 421
Points : 5 835
Points : 5 835
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
__________________
Get your motor runnin'
Head out on the highway...
Mr N. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2007, 19h56   #7
Membre confirmé
 
Avatar de mussara
 
Inscription : novembre 2004
Messages : 441
Détails du profil
Informations personnelles :
Âge : 44

Informations forums :
Inscription : novembre 2004
Messages : 441
Points : 299
Points : 299
ma page où s'affiche le formulaire et qui met à vide les éventuels cookies débute par:
Code :
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 :
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...
mussara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2007, 10h39   #8
Expert Confirmé Sénior
 
Avatar de Mr N.
 
Inscription : septembre 2004
Messages : 5 421
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 421
Points : 5 835
Points : 5 835
essaie de remplacer le header "expires" par
__________________
Get your motor runnin'
Head out on the highway...
Mr N. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2007, 10h46   #9
Membre confirmé
 
Avatar de mussara
 
Inscription : novembre 2004
Messages : 441
Détails du profil
Informations personnelles :
Âge : 44

Informations forums :
Inscription : novembre 2004
Messages : 441
Points : 299
Points : 299
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...)

mussara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2007, 13h13   #10
Membre confirmé
 
Avatar de mussara
 
Inscription : novembre 2004
Messages : 441
Détails du profil
Informations personnelles :
Âge : 44

Informations forums :
Inscription : novembre 2004
Messages : 441
Points : 299
Points : 299
... 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...
mussara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2007, 13h38   #11
Expert Confirmé Sénior
 
Avatar de Mr N.
 
Inscription : septembre 2004
Messages : 5 421
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 421
Points : 5 835
Points : 5 835
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 :
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 :
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...
__________________
Get your motor runnin'
Head out on the highway...
Mr N. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2007, 13h55   #12
Membre confirmé
 
Avatar de mussara
 
Inscription : novembre 2004
Messages : 441
Détails du profil
Informations personnelles :
Âge : 44

Informations forums :
Inscription : novembre 2004
Messages : 441
Points : 299
Points : 299
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...
mussara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2007, 13h57   #13
Expert Confirmé Sénior
 
Avatar de Mr N.
 
Inscription : septembre 2004
Messages : 5 421
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 421
Points : 5 835
Points : 5 835
Sinon, la solution de contournement, c'est de ne pas utiliser de cookie
__________________
Get your motor runnin'
Head out on the highway...
Mr N. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2007, 14h08   #14
Membre confirmé
 
Avatar de mussara
 
Inscription : novembre 2004
Messages : 441
Détails du profil
Informations personnelles :
Âge : 44

Informations forums :
Inscription : novembre 2004
Messages : 441
Points : 299
Points : 299
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 :
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....
mussara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2007, 14h14   #15
Expert Confirmé Sénior
 
Avatar de Mr N.
 
Inscription : septembre 2004
Messages : 5 421
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 421
Points : 5 835
Points : 5 835
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
__________________
Get your motor runnin'
Head out on the highway...
Mr N. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2007, 16h56   #16
Membre confirmé
 
Avatar de mussara
 
Inscription : novembre 2004
Messages : 441
Détails du profil
Informations personnelles :
Âge : 44

Informations forums :
Inscription : novembre 2004
Messages : 441
Points : 299
Points : 299
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
mussara est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h22.


 
 
 
 
Partenaires

Hébergement Web