|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() David VAURIS Inscription : octobre 2010 Messages : 10 ![]() |
Bonjour à tous,
Je fais actuellement un site avec authentification. Le fonctionnement de l'authentification (username/password) fonctionne correctement. La déconnection ne marche que partiellement... En effet après mettre déconnecté si je clique sur le bouton "Derniere page visitée" de mon navigateur, je retrouve une page propre à mon utilisateur... J'ai essayé pas mal de trucs, à coups de session_destroy, de headers et de if mais je n'ai pas trouvé a solution pour contrer ce bouton. HELP ME PLEASE ;-) |
|
|
00
|
|
|
#2 | ||
|
Membre régulier
![]() Inscription : novembre 2010 Messages : 102 ![]() |
Salut,
Code :
|
||
|
|
00
|
|
|
#3 |
|
Nouveau Membre du Club
![]() Inscription : juin 2010 Messages : 116 ![]() |
C'est tout à fait normal non ?
c'est enregistré dans tes historiques ! il se peut que je n'aie pas saisi la question... |
|
|
00
|
|
|
#4 | |
|
Membre Expert
![]() Baptiste ROUSSELÉtudiant Inscription : janvier 2011 Messages : 802 ![]() |
Citation:
Il n'affiche pas la page directement du serveur mais affiche la page que lui a mise en cache lorsque l'utilisateur l'a visité. Tu ne pourras donc rien faire contre ça. |
|
|
|
00
|
|
|
#5 | |||||
|
Invité de passage
![]() David VAURIS Inscription : octobre 2010 Messages : 10 ![]() |
Citation:
Code :
|
|||||
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() Baptiste ROUSSELÉtudiant Inscription : janvier 2011 Messages : 802 ![]() |
Dans ce cas c'est pas un soucis de cache mais de ton code qui ne prend aucunement en compte les sessions...
Pour savoir si une personne est connectée on ne vérifie pas que le tableau $_SESSION existe, on vérifie l'un de ses index ! Car avec session_start() $_SESSION existe toujours... |
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() David VAURIS Inscription : octobre 2010 Messages : 10 ![]() |
Merci Transgohan de t'intéresser à mon problème ;-)
Je te détaille mon code : - L'utilisateur se connecte via "index.php". Le contrôleur de l'appli redirige vers un fichier "testConnection.php" qui vérifie les informations envoyées par POST et si ces informations "username" et "password" sont correctes, les informations propres à la session sont renseignées. Le contrôleur récupère ensuite la main et envoie la page "bienvenue.php" qui contient un lien "Déconnexion". - L'utilisateur clique sur "Déconnexion", le contrôleur récupère l'URL et redirige vers un fichier "deconnexion.php" où je vide mes données propres à la session en cours et je réaffiche la page "index.php" Mon problème est lorsque je clique sur le bouton "retour" de mon navigateur, les infos de mon ancien POST sont envoyées et le chemin suivi par l'appli est le même que lorsque je me connecte directement. Donc les infos de session sont rechargées et je suis à nouveau connecté. Comment faire pour lorsque je clique sur ce bouton "retour", le contrôleur ne passe pas par "testConnection" ? |
|
|
00
|
|
|
#8 |
|
Membre Expert
![]() Baptiste ROUSSELÉtudiant Inscription : janvier 2011 Messages : 802 ![]() |
On ne fait jamais un bouton retour en cas de déconnexion...
On déconnecte l'utilisateur et on le redirige vers la page d'accueil ou le formulaire de connexion via la fonction header() par exemple. |
|
|
00
|
|
|
#9 | |
|
Invité de passage
![]() David VAURIS Inscription : octobre 2010 Messages : 10 ![]() |
Citation:
Lorsque l'utilisateur s'est déconnecté, il a toujours la possibilité de revenir en arrière. C'est ce fonctionnement que je n'arrive pas à gérer dans mon appli... Car comme je te l'ai dit précédemment, je repasse par le contrôleur et par le fichier "testConnection" qui va me réinitialiser ma session. |
|
|
|
00
|
|
|
#10 |
|
Membre Expert
![]() Baptiste ROUSSELÉtudiant Inscription : janvier 2011 Messages : 802 ![]() |
Fonctionnement normal donc.
Je ne vois pas comment tu pourrais modifier à partir du serveur le comportement du navigateur. Tu peux à la rigueur utiliser un token sur ton formulaire. Ainsi le retour en arrière renverra bien les données mais le token sera invalide ce qui ne connectera pas l'utilisateur. |
|
|
00
|
|
|
#11 |
|
Invité de passage
![]() David VAURIS Inscription : octobre 2010 Messages : 10 ![]() |
Hein hein ! Un token ! Je viens de regarder succinctement et ça m'a l'air pas mal du tout ça !
Je te tiens au courant de l'avancement de mon appli et j'espère pouvoir passer ce sujet en "résolu" ! Merci bcp |
|
|
00
|
|
|
#12 | ||
|
Invité de passage
![]() David VAURIS Inscription : octobre 2010 Messages : 10 ![]() |
Me revoilà ! Après quelques recherches sur les token, je me suis dit que malgré leur puissance en terme de sécurité, ils ne réglaient tjrs pas le problème du bouton précédent pour mon navigateur...
En poursuivant mes recherches, je suis tombé sur ce bout de code : Code :
Merci Trangohan de t'être intéresser à mon problème. |
||
|
|
00
|
|
|
#13 |
|
Membre Expert
![]() Baptiste ROUSSELÉtudiant Inscription : janvier 2011 Messages : 802 ![]() |
Le token résout totalement ton problème, tu as du mal comprendre son utilisation...
Page du formulaire : - Génération d'un token - Enregistrement de ce token dans une variable de session - Valeur du token passé dans un champ du formulaire Page de vérification du formulaire : - vérification que le token du formulaire correspond à celui mis en session - SI ok => affichage SINON => retour formulaire de connexion Page de deconnexion : - suppression des variables de session (dont le token) Bref on peut voir avec ceci que lors de la déconnexion le token session est détruit, donc le test du token sur les pages ne sera pas valide et une redirection sera effectuée vers le formulaire de connexion. Et si malgré cela il t'affiche toujours la page cela provient du navigateur qui met en cache le rendu et ne réinterroge pas le serveur. PS : ta fonction javascript n'est pas efficace 1) il suffit de désactiver le javascript pour la contourner 2) certains navigateurs ne la prennent pas en compte |
|
|
00
|
|
|
#14 |
|
Invité de passage
![]() David VAURIS Inscription : octobre 2010 Messages : 10 ![]() |
Bah tu sais j'utilise un framework javascript - ExtJS - pour développer les vues de mon appli donc les internautes qui n'auront pas activer le javascript dans leur navigateur n'auront pas accès à l'appli de toute manière.
Je ne doute pas du bien fondé des token mais un autre jour ;-) |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com