Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
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 21/04/2011, 18h05   #1
Invité de passage
 
David VAURIS
Inscription : octobre 2010
Messages : 10
Détails du profil
Informations personnelles :
Nom : David VAURIS

Informations forums :
Inscription : octobre 2010
Messages : 10
Points : 1
Points : 1
Par défaut Déconnection et bouton "retour"

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 ;-)
dvauris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2011, 21h02   #2
Membre régulier
 
Inscription : novembre 2010
Messages : 102
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 102
Points : 86
Points : 86
Salut,

Code :
1
2
$_SESSION = array()
session_unset();
Je sais plus trop la syntaxe mais il ne devrais pas avoir de soucis.
Soull est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2011, 23h20   #3
Nouveau Membre du Club
 
Inscription : juin 2010
Messages : 116
Détails du profil
Informations forums :
Inscription : juin 2010
Messages : 116
Points : 28
Points : 28
C'est tout à fait normal non ?
c'est enregistré dans tes historiques !

il se peut que je n'aie pas saisi la question...
AyManoVic est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/04/2011, 08h21   #4
Membre Expert
 
Avatar de transgohan
 
Homme Baptiste ROUSSEL
Étudiant
Inscription : janvier 2011
Messages : 802
Détails du profil
Informations personnelles :
Nom : Homme Baptiste ROUSSEL
Localisation : France, Territoire de Belfort (Franche Comté)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2011
Messages : 802
Points : 1 515
Points : 1 515
Citation:
Envoyé par dvauris Voir le message
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...
Cela s'appelle tout simplement le cache du navigateur...
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.
transgohan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/04/2011, 09h29   #5
Invité de passage
 
David VAURIS
Inscription : octobre 2010
Messages : 10
Détails du profil
Informations personnelles :
Nom : David VAURIS

Informations forums :
Inscription : octobre 2010
Messages : 10
Points : 1
Points : 1
Citation:
Envoyé par Soull Voir le message
Salut,

Code :
1
2
$_SESSION = array()
session_unset();
Je sais plus trop la syntaxe mais il ne devrais pas avoir de soucis.
J'ai testé cette fonction lorsque je me déconnecte mais malheureusement elle n'a pas le résultat attendu puisque lorsque je fais un refresh de la page précédente, je recharge des éléments dans ma session et par conséquent je ne peux pas faire un truc du style :

Code :
1
2
3
4
5
if(!isset($_SESSION))
	{
		header('Location: ../index.php');
		exit();
	}
dvauris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/04/2011, 09h50   #6
Membre Expert
 
Avatar de transgohan
 
Homme Baptiste ROUSSEL
Étudiant
Inscription : janvier 2011
Messages : 802
Détails du profil
Informations personnelles :
Nom : Homme Baptiste ROUSSEL
Localisation : France, Territoire de Belfort (Franche Comté)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2011
Messages : 802
Points : 1 515
Points : 1 515
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...
transgohan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/04/2011, 10h31   #7
Invité de passage
 
David VAURIS
Inscription : octobre 2010
Messages : 10
Détails du profil
Informations personnelles :
Nom : David VAURIS

Informations forums :
Inscription : octobre 2010
Messages : 10
Points : 1
Points : 1
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" ?
dvauris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/04/2011, 11h15   #8
Membre Expert
 
Avatar de transgohan
 
Homme Baptiste ROUSSEL
Étudiant
Inscription : janvier 2011
Messages : 802
Détails du profil
Informations personnelles :
Nom : Homme Baptiste ROUSSEL
Localisation : France, Territoire de Belfort (Franche Comté)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2011
Messages : 802
Points : 1 515
Points : 1 515
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.
transgohan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/04/2011, 11h22   #9
Invité de passage
 
David VAURIS
Inscription : octobre 2010
Messages : 10
Détails du profil
Informations personnelles :
Nom : David VAURIS

Informations forums :
Inscription : octobre 2010
Messages : 10
Points : 1
Points : 1
Citation:
Envoyé par transgohan Voir le message
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.
Je parlais du bouton "retour" du navigateur ;-)

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.
dvauris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/04/2011, 18h03   #10
Membre Expert
 
Avatar de transgohan
 
Homme Baptiste ROUSSEL
Étudiant
Inscription : janvier 2011
Messages : 802
Détails du profil
Informations personnelles :
Nom : Homme Baptiste ROUSSEL
Localisation : France, Territoire de Belfort (Franche Comté)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2011
Messages : 802
Points : 1 515
Points : 1 515
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.
transgohan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2011, 11h35   #11
Invité de passage
 
David VAURIS
Inscription : octobre 2010
Messages : 10
Détails du profil
Informations personnelles :
Nom : David VAURIS

Informations forums :
Inscription : octobre 2010
Messages : 10
Points : 1
Points : 1
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
dvauris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/04/2011, 11h53   #12
Invité de passage
 
David VAURIS
Inscription : octobre 2010
Messages : 10
Détails du profil
Informations personnelles :
Nom : David VAURIS

Informations forums :
Inscription : octobre 2010
Messages : 10
Points : 1
Points : 1
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 :
1
2
3
<SCRIPT LANGUAGE="JavaScript">
history.forward();
</SCRIPT>
Ce code en javascript empêche l'utilisateur d'utiliser le bouton précédent du navigateur pour revenir à la page où ce code a été positionné. C'est exactement ce qu'il me fallait.

Merci Trangohan de t'être intéresser à mon problème.
dvauris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/04/2011, 12h54   #13
Membre Expert
 
Avatar de transgohan
 
Homme Baptiste ROUSSEL
Étudiant
Inscription : janvier 2011
Messages : 802
Détails du profil
Informations personnelles :
Nom : Homme Baptiste ROUSSEL
Localisation : France, Territoire de Belfort (Franche Comté)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2011
Messages : 802
Points : 1 515
Points : 1 515
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
transgohan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/04/2011, 16h11   #14
Invité de passage
 
David VAURIS
Inscription : octobre 2010
Messages : 10
Détails du profil
Informations personnelles :
Nom : David VAURIS

Informations forums :
Inscription : octobre 2010
Messages : 10
Points : 1
Points : 1
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 ;-)
dvauris 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 12h31.


 
 
 
 
Partenaires

Hébergement Web