2017-01-31 4 views
-1

Lorsqu'un administrateur est connecté, l'administrateur aura une page d'administration sur la barre de navigation. Lorsque le membre est connecté, le membre aura une page de profil sur la barre de navigation. Cependant, disons quand l'administrateur s'est déconnecté, il ira à une page de déconnexion qui dit déconnecté et quand l'administrateur revient à la page d'accueil, l'administrateur est toujours connecté et la page d'admin est toujours sur le navbar.Impossible de se déconnecter php

Voici mes codes pour la connexion et la déconnexion.

<?php 
//checks if login session variable exist? If it does, display Logout 
session_start(); 
if(isset($_SESSION['login']) && $_SESSION['login']!="") { 
    //link to page logout.php and displays the word Logout + username 
    echo"<li><a href='logout.php'>Logout ".$_SESSION['login']."</a></li>"; 
    if(isset($_SESSION['login'])&& $_SESSION['usertype'] !="admin") { 
     echo ("<li><a href='profile.php'>Profile</a></li>");       
    } else { 
     echo ("<li><a href='AdminPage.php'>Administrator</a></li>"); 
    } 
    if($_SESSION['login'] == "") { 
     header("Location:login.php"); 
    } 
    if($_SESSION['login'] != "" && $_SESSION['usertype'] =="member") { 
     header("location:home.php"); 
    } 
} else { 
    //else link to pagelogin.php and display the word Login 
    echo("<li><a href ='pagelogin.php'>Login</a></li>"); 
} 
?> 

Comment puis-je corriger l'erreur de sorte que lorsque l'utilisateur est connecté, l'utilisateur peut se connecter avec succès.

+0

« lorsque l'administrateur retourne à la page d'accueil, l'administrateur est toujours connecté et la page d'administration est toujours sur la barre de navigation. » Moyens admin revenir du lien du bouton de retour du navigateur? –

+0

cela peut ne pas être une réponse à la question, mais 'if ($ _ SESSION ['login'] ==" ")' ne sera jamais vrai car il se trouve dans un if ($ _ SESSION ['login']! = " ")' test – Kaddath

Répondre

0

dans votre fichier logout.php il vous suffit de faire la base:

<?php 

session_start(); 

session_destroy(); 

header("Location: pagelogin.php"); // or whatever your login file is called 
?> 
+0

C'est bon et ça fonctionne mais comment est-ce que je montre encore le texte "vous avez déconnecté avec succès" sur la page de déconnexion avant de retourner à la page d'accueil? –

+0

Vous n'avez pas à le faire exactement comme je le suggère avec l'emplacement de l'en-tête. Vous pouvez faire en sorte que la déconnexion se déconnecte de loggedout.php avec un message. Mais généralement, vous le faites si un utilisateur connecté ne peut pas voir l'écran de connexion. – Option

+0

Si vous êtes satisfait de la réponse, veuillez la marquer comme résolue. – Option

0

sur logout Vous devez détruire la session de l'utilisateur: dans votre page logout écrire du code

session_destroy(); 

méthode 2 est de supprimer les données de vos variables de session, dans votre page de déconnexion écrivez le code

$_SESSION['login'] = ''; 
$_SESSION['usertype'] = ''; 
session_destroy(); 

après destroy session et variable de session le renvoyer à la page de connexion

header('location:login.php?msg="You Have successfully logout....!!"'); 
0

Code pour la destruction de la session, les conditions de fermeture de session etc est nécessaire, mais vous n'avez pas le contrôle sur le bouton retour de votre navigateur, vous devez écrire un code pour effacer le cache et son max-age etc. recherche sur les détails mentionnés ci-dessous. vous devrez peut-être ajouter plus de code dans l'en-tête HTML/en-tête php.

<?php 

header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0"); 
header("Cache-Control: post-check=0, pre-check=0", false); 
header("Pragma: no-cache"); 
?> 

Vous pouvez vérifier ce lien pourrait aider How to prevent Browser cache for php site