Se delogger

Résolu
pontarose Messages postés 150 Date d'inscription   Statut Membre Dernière intervention   -  
pontarose Messages postés 150 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour, je sécurise l'accès a mon interface web par login et mot de passe.
Ma première page j'entre mon mot de passe et login
(si j'ai perdu mon mot de passe ou pour m'identifierpour la première fois cela m'ouvre d'autre onglets)
Une fois que je suis loggé j'ai accès a une page qui me dis que je me suis bien loggé, puis je click sur un bouton qui m'envoie vers la première page de mon interface. Sur cette première page de mon interface, je peux me délogger via un bouton logout.
Quand je clique sur logout je reviens donc a ma page d'accès login/mot de passe, mais si mes autres onglet sont ouvert cela ne les ferme pas et donc si quelqu'un vient il peux entrer dans mon interface.

en fait je ne sais pas comment faire.
Faudrait peutêtre que ma fonction logout soit interprété par les autres fenêtre???

On peut m'aider svp

20 réponses

Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
Bonjour,

Comment est faite ta fonction logoout ? Ferme-t-elle la session en cours, ou se contente-t-elle de te rediriger vers la première page ?

Xavier
0
pontarose Messages postés 150 Date d'inscription   Statut Membre Dernière intervention   2
 
Ma fonction logout ferme la session en cours et me redirige vers la page ou j'entre mon mot de passe et login.

Je viens de me rendre compte qu'apparement ma session n'est pas ouverte car
une fois que je me suis bien loggé j'ouvre une session et je conserve le login soit, session start(); $_SESSION['login']=$login; exit();
puis dans ma page suivante donc j'ai:
>?php
session start();
print("vous êtes loggé sous :$login")
if(!isset($_SESSION['login']))
{
print("PBE");
}
else
{
print("GOOD");
}
?>

J'obtiens vous êtes loggé sous:
GOOD
0
Dalida Messages postés 6728 Date d'inscription   Statut Contributeur Dernière intervention   922
 
salut,

on est loin du compte, là !
-;o)

je te conseille de beaucoup lire sur les sessions, ce n'est pas forcement très compliqué mais c'est une composante vitale d'un site dynamique donc autant ne pas passer à côté.

je te conseille en particulier ce tuto.
0
neo2099 Messages postés 164 Date d'inscription   Statut Membre Dernière intervention   12
 
pour se délogger c'est simple fait une recherche sur session_destroy();
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
pontarose Messages postés 150 Date d'inscription   Statut Membre Dernière intervention   2
 
Mon problème est que quand je clique sur logout OK je retourne a ma page d'accès login/mot de passe; cependant si d'autres onglet de mon interface sont ouvert; je peux toujours effectuer des choses sur ces pages. Alors que j'aimerais ne plus pouvoir faire de choses sur ces pages vue que je me suis delogué.

Voiçi ma fonction logout.php

<?php
session star();
$_SESSION=array();
session_destroy=();
header("Location:formulaire.htm");

?>
0
warlix Messages postés 1201 Date d'inscription   Statut Contributeur Dernière intervention   288
 
Salut


le soucis ne viendrait pas du fait que tu fais ouvrir plusieurs cessions (la même ) mais dans plusieurs pages ?

ta redirection est faites avec _blank non ?

0
pontarose Messages postés 150 Date d'inscription   Statut Membre Dernière intervention   2
 
Oui j'ouvre la même session dans plusieus pages.

Je ne comprend pas ta question"ta redirection est faites avec _blank non ? "
Ccela ne m'ouvre pas un nouvel onglet quand je clique sur logout sur la même page je retombe sur ma page d'accès login/mot de passe
0
warlix Messages postés 1201 Date d'inscription   Statut Contributeur Dernière intervention   288
 
Non ma question n a pas d interet au niveau de la réponse recherché , je ne connais absolument pas le php et js , il me faudrais 150 ans pour que je sache ecrire une ligne

Ce que je souligne c est qu il est normal que tu es le pb , car tu ouvre plusieurs cession pour le même compte en ouvrant plusieurs pages


le _blank = ouvrir dans une nouvelle page

C est sur ce point que j interroge , pourquoi ouvrir plusieurs pages.
1pages = 1 cession


si tu mets plutot _parent , ou _self en cible , ça marche pas mieux ?

Voir rien , par défaut ça va écraser ta premier page

0
Dalida Messages postés 6728 Date d'inscription   Statut Contributeur Dernière intervention   922
 
salut Warlix,

non justement, en php les sessions permettent d'avoir une seule variable entre plusieurs accès du même utilisateur.
que ce soit la même page entre deux appels au serveur ou de deux pages du même site tout cela dans un seul navigateur bien sûr !

en gros la session c'est l'équivalent d'un cookie sur le serveur. si la session existe déjà pour un utilisateur et qu'elle n'a pas expiré elle est réutilisée, ce qui te permet de retrouver les valeurs que tu y as stocké.
0
Dalida Messages postés 6728 Date d'inscription   Statut Contributeur Dernière intervention   922
 
salut,

il y a une coquille dans ton code, ça vient peut être de là.
<?php
session_start();
$_SESSION=array();
session_destroy=();
header("Location:formulaire.htm");
?>

cela aurait dû afficher une erreur. si ce n'est pas le cas ton php.ini est mal paramétré.
il faut qu'il contienne :
error_reporting  =  E_ALL
display_errors = On

je crois que ça suffit.
0
pontarose Messages postés 150 Date d'inscription   Statut Membre Dernière intervention   2
 
je ne te suit pas.
En fait une fois que je me suis logué tout s'effectue sur une seule page.
Cependant il est possible de cliquer en ouvrant la page sur un nouvel onglet; mais a ce moment là si je me délogue; cette page que j'ai ouvert dans un nouvel onglet est présent OK mais pour une sécurité je ne dois plus pouvoir y réaliser des choeses dessus vue que j'ai mis fin a ma session.
0
pontarose Messages postés 150 Date d'inscription   Statut Membre Dernière intervention   2
 
Bonjour,

J'ai bien session_start();
c'est une erreur de ma part.
0
pontarose Messages postés 150 Date d'inscription   Statut Membre Dernière intervention   2
 
Ma table user ,de ma base de donnée, qui contient le login et mot de passe n'est relié a aucune autre table de ma base de donnée.
Le problème peut-il être lié a cela?
0
Dalida Messages postés 6728 Date d'inscription   Statut Contributeur Dernière intervention   922
 
salut,

il n'y a rien à voir entre table de bdd et sessions.
comment ouvres-tu ta session, comment y affectes-tu des valeurs et comment testes-tu l'existence de session en début de page ?
0
pontarose Messages postés 150 Date d'inscription   Statut Membre Dernière intervention   2
 
* Voilà comment j'ouvre ma session:

session start();
//j'enregistre $login dans une variable de session
$login=$_POST['login'];
$_SESSION['login']=$login;

* Voilà comment je teste l'existence d'une session en début de page:
<?php
session start();
if(isset($_SESSION['login']))
{
$login=$_SESSION['login'];
print("Ouverture de la session<br>");
}
0
Dalida Messages postés 6728 Date d'inscription   Statut Contributeur Dernière intervention   922
 
salut,

Mon problème est que quand je clique sur logout OK je retourne a ma page d'accès login/mot de passe; cependant si d'autres onglet de mon interface sont ouvert; je peux toujours effectuer des choses sur ces pages. Alors que j'aimerais ne plus pouvoir faire de choses sur ces pages vue que je me suis delogué.
quand la page est affichée (on va dire que l'on est sur une page qui affiche le contenu d'une base de données : "show_rows.php"), si pendant ce temps dans une autre page tu détruis la session cela ne change rien pour "show_rows.php".
et dans cette page tu as par exemple un lien qui permet de supprimer une entrée de base de donnée qui pointe vers "delete_row.php".

en haut de "delete_row.php" tu dois avoir quelque chose du style :
<?php
session start();
if(isset($_SESSION['login']))
{
$login=$_SESSION['login'];
print("Ouverture de la session<br>");
}
else
{
header("Location:identification.php")
}
?>

comme ça, étant donné que la session a été détruite entre le moment de l'affichage de la page "show_rows.php" et l'appel de "delete_row.php", ton visiteur sera redirigé vers la page d'identification.
0
pontarose Messages postés 150 Date d'inscription   Statut Membre Dernière intervention   2
 
Je ne te suis pas a partir de "et dans cette page tu as par exemple un lien qui permet de supprimer une entrée de base de donnée qui pointe vers "delete_row.php". "

je dois mettre ceci dans toutes mes pages.php?

<?php
session start();
if(isset($_SESSION['login']))
{
$login=$_SESSION['login'];
print("Ouverture de la session<br>");
}
else
{
header("Location:identification.php")
}
?>
0
Dalida Messages postés 6728 Date d'inscription   Statut Contributeur Dernière intervention   922
 
ben dans toutes celles dont tu veux sécuriser l'accès !
sinon ton script sexecutera avec ou sans identification.
0
pontarose Messages postés 150 Date d'inscription   Statut Membre Dernière intervention   2
 
OK merci beaucoup;
Ca marche et j'ai compris.
0
pontarose Messages postés 150 Date d'inscription   Statut Membre Dernière intervention   2
 
OK merci ça marche et j'ai compris
0
pontarose Messages postés 150 Date d'inscription   Statut Membre Dernière intervention   2
 
Problème résolu
0