2014-05-17 4 views
0

Voici mes db.classesLogin et redirection après la déconnexion PHP

public function login($un, $pw) 
    { 
     $result = mysqli_query($this->dbh,"select username, password from users where username='$un' and password='$pw'"); 

     $count=mysqli_num_rows($result); 

     if($count==1){ 
      header("location:home.php"); 
     } 
     else { 
      echo 
      "<script type='text/javascript'> 

      alert('LOG-IN FAILED!'); 

      </script>"; 

      echo '<script language="JavaScript"> window.location.href ="index.php" </script>'; 
     } 
    } 

Voici mon PHP

<?PHP 
include("db.classes.php"); 
$g = new DB(); 
$g->connection(); 

    if(isset($_POST['subBtn'])) 
     { 
      $un = $g->clean($_POST["uname"]); 
      $pw = $g->clean($_POST["pass"]); 
      $g->login($un, $pw); 
     } 

$g->close();  
?> 

Voici mon bouton de fermeture de session

<div id="footer"> 
    <li id="Login"><a href="index.php">Log Out</a></li> 
</div> 

Comment puis-je empêcher la l'utilisateur de revenir aux pages précédentes sans se reconnecter après s'être déconnecté?

+0

chèque pour la session est nulle ou non –

+0

en connexion régler la session et la fermeture de session signifie unset session si la session est vide redirect à la page index.php – Ramki

+0

http://www.makeitsimple.co.in/PHP_loginexmp.php –

Répondre

0

Ajoutez juste

session_start(); 

au début de votre script.

Lorsque la connexion est réussie, vous pouvez définir une session comme

$_SESSION['login'] = true; 

ou même stocker userdata comme son nom ou ID pour les opérations ultérieures.

ensuite sur chaque page que vous voulez sécuriser simplement ajouter

if($_SESSION['login'] !== true) header("location:index.php"); 

Et dconnecter vous pouvez unset la session ou tout simplement mettre à false

$_SESSION['login'] = false; 
unset($_SESSION['login']); 

Cela peut être optimisé à vos besoins aussi loin que vous voulez ....

http://krisnaordinary.wordpress.com/2010/04/24/creating-a-simple-login-logout-session-using-php/

Cette artic le semble aller un peu plus loin dans les séances ...

0
<?PHP 
session_start(); 
$_SESSION['logged_in'] = false; 

include("db.classes.php"); 
$g = new DB(); 
$g->connection(); 

if(isset($_POST['subBtn'])){ 
    $un = $g->clean($_POST["uname"]); 
    $pw = $g->clean($_POST["pass"]); 
    $g->login($un, $pw); 
} 

$g->close();  
?> 

Sur connexion: true mis logged_in (si les informations d'identification sont ok)

public function login($un, $pw){ 
    $result = mysqli_query($this->dbh,"select username, password from users where username='$un' and password='$pw'"); 

    $count=mysqli_num_rows($result); 
    if($count==1){ 
     $_SESSION['logged_in'] = true; 
     header("location:home.php"); 
    } else { 
     $_SESSION['logged_in'] = false; 
     echo "<script type='text/javascript'>alert('LOG-IN FAILED!');</script>"; 
     echo '<script language="JavaScript"> window.location.href ="index.php" </script>'; 
     die(); 
    } 
} 

Dans 'home.php':

<?php 
session_start(); 
if(!$_SESSION['logged_in']){ 
    header('Location: index.php'); 
} 
//... 

sur fermeture de session: éDITÉE pour répondre à la question dans le commentaire:

bouton Déconnexion:

<div id="footer"> 
    <li id="Login"><a href="index.php?logout=1">Log Out</a></li> 
</div> 

En index.php (au début):

<?php 

session_start(); 
if(isset($_GET['logout']) && $_GET['logout'] == 1){ 
    $_SESSION['logged_in'] = false; 
    header('location: index.php'); 
    die(); 
} 
+0

où dois-je mettre le dernier code (la déconnexion)? – jayyyyy

+0

J'ai édité ma réponse pour répondre à cette question :-) –

0

Toutes vos pages qui ne sont pas publiques devraient vérifier la session avant tout.

Exemple:

<?PHP 
session_start(); 
if ($_SESSION['user_id']<1) 
    die('You must login'); //Or redirect from here 

Cela les empêchera de frapper en arrière.Vous pouvez aussi avoir besoin d'envoyer des en-têtes de cache:

<?PHP 
header ("Expires: Thu, 19 Nov 1981 08:52:00 GMT",true); 
header ("Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0",true); 
header ("Pragma: no-cache",true); 

Habituellement, les en-têtes de mise en cache ne sont pas nécessaires, mais peut être utile si le problème persiste.

Questions connexes