2010-02-28 8 views
0

Voici le codeLe code de déconnexion ne s'exécute pas du tout. php

Je ne sais pas ce qui ne va pas avec elle.

<?php 
     //Logout code 
     //Starting Session 
     session_start(); 
     //Include 
     include ("includes/mass.php"); 
     //Check if the user is logged in 
     $username = $_SESSION['username']; 
     $logged_in_query = "SELECT * FROM user WHERE loggedin='1' AND username='$username'"; 
     $check_if_logged_in = mysql_query($logged_in_query); 
     if (isset($username)) 

    {  while ($row = mysql_fetch_array($check_if_logged_in)) 

      { 
       $logged_in = $row['loggedin']; 

       if ($logged_in == 1) 

        { 
        //User becomes logged out on database records 

        $sql_logout = "UPDATE user SET loggedin='0' WHERE loggedin='1' AND username='$username'"; 

        $logout_query = mysql_query($logout_query); 

        //Logout page 

        session_destroy(); 

        echo "You have been logged out.","<br>"."<a href='index.php'>Click Here To Go Back</a>"; 
        } 
          } 
       }    else 

    { 
           echo"You are not logged in"."<br><a href='register.php'>Click To Sign Up</a>"; 
          }   
     ?> 
+0

Qu'est-ce qui se passe à la place? – blockhead

+0

Rien. Im juste obtenir un écran vide. :( – Tapha

Répondre

3

Avez-vous un objet lien mysql (de mysql_connect()/mysql_select_db()?) De vos commentaires ci-dessous, il ne semble pas de cette façon.

Ce SQL est erroné:

$sql_logout = "UPDATE user WHERE loggedin='1' AND username='$username'"; 

devrait être:

$sql_logout = "UPDATE user SET loggedin=0 WHERE loggedin='1' AND username='$username'"; 

?

Vous probablement dire aussi à l'aide mysql_fetch_assoc() au lieu de mysql_fetch_array().

Cette ligne:

$logout_query = mysql_query($logout_query); 

devrait être

$logout_query = mysql_query($sql_logout); 

Mettez dans votre connexion mysql informations correctes et db et essayez d'exécuter cela. S'il vous plaît poster la sortie.

<?php 
//Logout code 
//Starting Session 
session_start(); 

echo "hello<br />"; 

//Include 
include ("includes/mass.php"); 

echo "no problem in mass.php!<br />"; 

// FILL ME IN 
$my_link = mysql_connect($server, $username, $password, TRUE); 
mysql_select_db('your_db', $link); 

//Check if the user is logged in 
$username = $_SESSION['username']; 
$logged_in_query = "SELECT loggedin FROM user WHERE loggedin='1' AND username='$username'"; 
echo $logged_in_query . "<br />"; 

$check_if_logged_in = mysql_query($logged_in_query, $my_link); 
var_dump(mysql_num_rows($check_if_logged_in)); 

if (isset($username)) 
{ 
    while ($row = mysql_fetch_assoc($check_if_logged_in)) 
    { 
     var_dump($row); 

     $logged_in = $row['loggedin']; 

     if ($logged_in == 1) 
     { 
      //User become logged out on database records 
      $sql_logout = "UPDATE user SET loggedin=0 WHERE loggedin='1' AND username='$username'"; 
      $logout_query = mysql_query($sql_logout, $my_link); 

      //Logout page 
      session_destroy(); 
      echo "You have been logged out.","<br>"."<a href='index.php'>Click Here To Go Back</a>"; 
     } 
     else 
     { 
      echo"You are not logged in"."<br><a href='register.php'>Click To Sign Up</a>"; 
     } 
    } 
} 
?> 
+0

+1 Cela semble assez susceptible d'être un problème –

+0

Oui Corrigé juste cela – Tapha

+0

@Tapha: Cela fonctionne-t-il maintenant, ou y at-il encore un autre problème? – jasonbar

1

ce que vous avez écrit est très mauvais code. Je vous suggère de faire comme ceci 1. créer une session dans la page de connexion une fois que leur nom d'utilisateur et mot de passe correspond à l'entrée dans la base de 2. destroy cette session quand ils disent se déconnecter.

votre implémentation de vérification de l'utilisateur à l'aide db n'est pas extensible. chaque fois qu'il est exécuté et ce n'est pas la bonne idée de le faire.

+0

+1 ceci, aussi ... – jasonbar

+0

Im encerclé. Je pensais que ce moyen ajouterait simplement une couche de sécurité. Pourriez-vous nous expliquer comment cela peut empêcher la mise à l'échelle? J'aimerais savoir. – Tapha

+0

supposer, 1000 utilisateurs accédant à votre site. ils se sont tous connectés. Vous devez effectuer 1000 mises à jour pour la connexion intial et 1000 mises à jour pour la déconnexion, ce qui est plus coûteux. également 1000 requêtes pour chaque demande. Pensez à 1 million d'utilisateurs ... vos trucs vont-ils fonctionner? pour vous assurer, essayez les tests de performance en utilisant Jmeter. vous saurez la différence. – coder

0

J'utiliser quelque chose comme ceci:

<?php 
    //Logout code 
    //Starting Session 
    session_start(); 
    //Include 
    include ("includes/mass.php"); 
    //Check if the user is logged in 
    $username = $_SESSION['username']; 

    if (isset($username)) 
    { 
    $logged_in_query = "SELECT * FROM user WHERE loggedin='1' AND username='".$username."' LIMIT 1"; 
    $check_if_logged_in = mysql_query($logged_in_query); 
    $logged_in = mysql_fetch_field($check_if_logged_in); 

     if ($logged_in == 1) 
     { 
     //User becomes logged out on database records 

     $sql_logout = "UPDATE user SET loggedin='0' WHERE loggedin='1' AND username='".$username."' LIMIT 1"; 

     $logout_query = mysql_query($logout_query); 
     if ($logout_query) 
     { 
     //Logout page 

     session_destroy(); 
     echo "You have been logged out.","<br>"."<a href='index.php'>Click Here To Go Back</a>"; 
     } 
     else 
     { 
     //Couldn't update the user table to set your login status. 
     echo "MYSQL Error, please contact admin LO-2"; 
     exit(); 
     } 
     } 
     else 
     { 
     echo "You are not logged in"."<br><a href='register.php'>Click To Sign Up</a>"; 
     } 
    } 
    else 
    { 
     echo "You are not logged in"."<br><a href='register.php'>Click To Sign Up</a>"; 
    } 
?> 

Non testé

Max

Questions connexes