Fermer une session l'utilisateur lorsque le tronquer la table de séances

  • Bogey
  • Bogey
  • Genius
  • Avatar de l’utilisateur
  • Inscription: Juil 14, 2005
  • Messages: 8211
  • Loc: USA
  • Status: Offline

Message Juin 22nd, 2011, 12:19 am

Quoi de GI essaie de faire dans l'écriture de GI du système se connecter l'utilisateur hors lorsque les informations des utilisateurs de la table de séances sont supprimées...ou déconnecter tout le monde une fois que la table est étant complètement tronquée.

Je comprends ce que je dois faire et pense que je l'ai fait, mais elle ne fonctionne pas...sur chaque page, il vérifie pour l'activité des utilisateurs et de vérifier si l'utilisateur est connecté, et lorsqu'il vérifie si l'utilisateur est connecté il vérifie si les données des utilisateurs sont à la base de données et si non, alors l'utilisateur est connecté dans le fichier PHP, mais il ne le reflète pas dans les tests de temps réel. Voici ce que j'ai :
PHP Code: [ Select ]
<?php
    public function logged()
    {
        global $db;
       
        // Checking if session is set
        if(!isset($_SESSION['u_logged_in']))
        {
            return false;
        }
       
        // Checking if the user is logged in the session table
        $sql = $db->build_key_query(array('SELECT'    => 'userID',
                                          'FROM'      => SESSION_TABLE,
                                          'WHERE'     => array('userID' => $this->user_id)));
       
        // Checking if any entries exist
        if($db->num_rows($sql) == 0)
        {
            // Logging the user out
            $this->logout();
            return false;
        }
        return $_SESSION['u_logged_in'];
    }
 
    public function logout($userID = null, $_redirect = true)
    {
        global $db;
       
        // Making sure we log out the correct user
        $user_id = (is_numeric($userID)) ? $userID : $this->user_id;
       
        // Getting the correct group ID for the user
        $group_id = $db->_get_('groupID', USER_TABLE, array('userID' => $user_id));
       
        // Generating the SQL
        $sql = $db->build_remove(SESSION_TABLE, array('userID'     => $user_id,
                                                      'groupID'    => $group_id));
       
        // Removing the user session from the session table
        $db->resource($sql);
       
        // Removing the session arrays
        $_SESSION = array();
       
        // Regenerating the session ID
        session_regenerate_id();
       
        // Destroying current session
        session_destroy();
       
        // Checking if we are redirecting the user
        if($_redirect)
        {
            // Default redirection page
            $redirect = 'index.php';
           
            // Checking if they came from another page
            if(!empty($_GET['page']) && !strpos('..', $_GET['page']))
            {
                $redirect = $_GET['page'];
            }
             
            // Sending the user to the main page
            header("LOCATION: {$redirect}");
        }
    }
?>
  1. <?php
  2.     public function logged()
  3.     {
  4.         global $db;
  5.        
  6.         // Checking if session is set
  7.         if(!isset($_SESSION['u_logged_in']))
  8.         {
  9.             return false;
  10.         }
  11.        
  12.         // Checking if the user is logged in the session table
  13.         $sql = $db->build_key_query(array('SELECT'    => 'userID',
  14.                                           'FROM'      => SESSION_TABLE,
  15.                                           'WHERE'     => array('userID' => $this->user_id)));
  16.        
  17.         // Checking if any entries exist
  18.         if($db->num_rows($sql) == 0)
  19.         {
  20.             // Logging the user out
  21.             $this->logout();
  22.             return false;
  23.         }
  24.         return $_SESSION['u_logged_in'];
  25.     }
  26.  
  27.     public function logout($userID = null, $_redirect = true)
  28.     {
  29.         global $db;
  30.        
  31.         // Making sure we log out the correct user
  32.         $user_id = (is_numeric($userID)) ? $userID : $this->user_id;
  33.        
  34.         // Getting the correct group ID for the user
  35.         $group_id = $db->_get_('groupID', USER_TABLE, array('userID' => $user_id));
  36.        
  37.         // Generating the SQL
  38.         $sql = $db->build_remove(SESSION_TABLE, array('userID'     => $user_id,
  39.                                                       'groupID'    => $group_id));
  40.        
  41.         // Removing the user session from the session table
  42.         $db->resource($sql);
  43.        
  44.         // Removing the session arrays
  45.         $_SESSION = array();
  46.        
  47.         // Regenerating the session ID
  48.         session_regenerate_id();
  49.        
  50.         // Destroying current session
  51.         session_destroy();
  52.        
  53.         // Checking if we are redirecting the user
  54.         if($_redirect)
  55.         {
  56.             // Default redirection page
  57.             $redirect = 'index.php';
  58.            
  59.             // Checking if they came from another page
  60.             if(!empty($_GET['page']) && !strpos('..', $_GET['page']))
  61.             {
  62.                 $redirect = $_GET['page'];
  63.             }
  64.              
  65.             // Sending the user to the main page
  66.             header("LOCATION: {$redirect}");
  67.         }
  68.     }
  69. ?>

N'importe quelle aide ?
"Bring forth therefore fruits meet for repentance:" Matthew 3:8
  • Anonymous
  • Bot
  • No Avatar
  • Inscription: 25 Feb 2008
  • Messages: ?
  • Loc: Ozzuland
  • Status: Online

Message Juin 22nd, 2011, 12:19 am

  • Nightslyr
  • Proficient
  • Proficient
  • No Avatar
  • Inscription: Sep 21, 2005
  • Messages: 274
  • Status: Offline

Message Juin 22nd, 2011, 4:50 am

ID de faire quelque chose comme ceci :

PHP Code: [ Select ]
public function logged()
{
    // Note, no 'global'.  Why?  Because our user object should
    // have a reference to the db.  'Global' breaks
    // encapsulation, one of the main components of OOP
 
    // Checking if the user is logged in the session table
    $sql = $this->db->build_key_query(array('SELECT'    => 'userID',
                                            'FROM'      => SESSION_TABLE,
                                            'WHERE'     => array('userID' => $this->user_id)));
 
   
    if($this->db->num_rows($sql) == 0 || !isset($_SESSION['u_logged_in']))
    {
        $this->logout();
        return false
    }
       
    return $_SESSION['u_logged_in'];
}
  1. public function logged()
  2. {
  3.     // Note, no 'global'.  Why?  Because our user object should
  4.     // have a reference to the db.  'Global' breaks
  5.     // encapsulation, one of the main components of OOP
  6.  
  7.     // Checking if the user is logged in the session table
  8.     $sql = $this->db->build_key_query(array('SELECT'    => 'userID',
  9.                                             'FROM'      => SESSION_TABLE,
  10.                                             'WHERE'     => array('userID' => $this->user_id)));
  11.  
  12.    
  13.     if($this->db->num_rows($sql) == 0 || !isset($_SESSION['u_logged_in']))
  14.     {
  15.         $this->logout();
  16.         return false
  17.     }
  18.        
  19.     return $_SESSION['u_logged_in'];
  20. }


...maintenant que je regarde elle rapproche, vous reçoivent des erreurs db dans votre deuxième méthode ? Si userID est par défaut null, alors ce serait $ce-&gt; user_id equal ? Serait-ce une valeur utilisable dans une requête db ? Vous travaillez avec des erreurs PHP activés ?

Enfin, une fois de plus, vous utilisez « global » et cette fois dans un objet. Je ne sais pas pourquoi vous sont tellement concentrée sur l'utilisation de « global ». Il n'y a jamais une bonne raison d'utiliser « global ». Jamais. OOP particulier, vous vous cassez encapsulation. Si votre objet nécessite une référence à un objet db afin de travailler, alors composer les deux. Utilisez l'injection de dépendance et faire droit.

À la longue, vous font pas beaucoup bon à l'aide d'objets des types de données simplement comme abstraites. Sa programmation procédurale avec des objets, pas de POO. Si vous voulez jouer avec des objets, vous devez apprendre que certains de la théorie derrière elle et commun des habitudes de consommation. Obtenez Zandstras livre et obtenir le livre de Gang de Fours pour voir comment faire correctement.
  • Bogey
  • Bogey
  • Genius
  • Avatar de l’utilisateur
  • Inscription: Juil 14, 2005
  • Messages: 8211
  • Loc: USA
  • Status: Offline

Message Juin 22nd, 2011, 12:13 pm

Le rôle que $userID joue la fonction n'est pas complète. Si son jeu sur null puis il consigne l'utilisateur actuel hors (l'utilisateur qui a lancé cette fonction)...$ si cela-&gt; user_id est que les utilisateurs ID.

Si l'identificateur d'utilisateur $ pour un certain nombre il supprime le $ ID utilisateur info de la table de la session et cet utilisateur (pas l'utilisateur qui a lancé cette fonction) pourrait être connecté.

Ci-dessous est ce que je crois pour être une fonction logout() finis
PHP Code: [ Select ]
<?
    /*
     * public function log_out([ int $userID [, bool $_redirect])
     *      @integer $userID = The ID of the user we want to log out
     *      @boolean $_redirect = True if we are redirecting, false if not
     *
     * Logging the user out
     */
   
    public function logout($userID = null, $_redirect = true)
    {
        global $db;
       
        // Making sure we log out the correct user
        $user_id = (is_numeric($userID)) ? $userID : $this->user_id;
       
        // Getting the correct group ID for the user
        $group_id = (is_numeric($userID)) ? $db->_get_('groupID', USER_TABLE, array('userID' => $user_id)) : $this->group_id;
       
        // Generating the SQL
        $sql = $db->build_remove(SESSION_TABLE, array('userID'     => $user_id,
                                                      'groupID'    => $group_id));
       
        // Removing the user session from the session table
        $db->resource($sql);
       
        if(!is_numeric($userID))
        {
            // Removing the session arrays
            $_SESSION = array();
           
            // Regenerating the session ID
            session_regenerate_id();
           
            // Destroying current session
            session_destroy();
           
            // Checking if we are redirecting the user
            if($_redirect)
            {
                // Default redirection page
                $redirect = 'index.php';
               
                // Checking if they came from another page
                if(!empty($_GET['page']) && !strpos('..', $_GET['page']))
                {
                    $redirect = $_GET['page'];
                }
               
                // Sending the user to the main page
                header("LOCATION: {$redirect}");
            }
        }
    }
?>
  1. <?
  2.     /*
  3.      * public function log_out([ int $userID [, bool $_redirect])
  4.      *      @integer $userID = The ID of the user we want to log out
  5.      *      @boolean $_redirect = True if we are redirecting, false if not
  6.      *
  7.      * Logging the user out
  8.      */
  9.    
  10.     public function logout($userID = null, $_redirect = true)
  11.     {
  12.         global $db;
  13.        
  14.         // Making sure we log out the correct user
  15.         $user_id = (is_numeric($userID)) ? $userID : $this->user_id;
  16.        
  17.         // Getting the correct group ID for the user
  18.         $group_id = (is_numeric($userID)) ? $db->_get_('groupID', USER_TABLE, array('userID' => $user_id)) : $this->group_id;
  19.        
  20.         // Generating the SQL
  21.         $sql = $db->build_remove(SESSION_TABLE, array('userID'     => $user_id,
  22.                                                       'groupID'    => $group_id));
  23.        
  24.         // Removing the user session from the session table
  25.         $db->resource($sql);
  26.        
  27.         if(!is_numeric($userID))
  28.         {
  29.             // Removing the session arrays
  30.             $_SESSION = array();
  31.            
  32.             // Regenerating the session ID
  33.             session_regenerate_id();
  34.            
  35.             // Destroying current session
  36.             session_destroy();
  37.            
  38.             // Checking if we are redirecting the user
  39.             if($_redirect)
  40.             {
  41.                 // Default redirection page
  42.                 $redirect = 'index.php';
  43.                
  44.                 // Checking if they came from another page
  45.                 if(!empty($_GET['page']) && !strpos('..', $_GET['page']))
  46.                 {
  47.                     $redirect = $_GET['page'];
  48.                 }
  49.                
  50.                 // Sending the user to the main page
  51.                 header("LOCATION: {$redirect}");
  52.             }
  53.         }
  54.     }
  55. ?>

Et j'ai une question sur la fonction...est ok, ou il est mal vu d'avoir une fonction dans un opérateur ternaire ?
PHP Code: [ Select ]
$group_id = (is_numeric($userID)) ? $db->_get_('groupID', USER_TABLE, array('userID' => $user_id)) : $this->group_id;

Motifs utiliser globals, c'est que beaucoup de mes classes utilise une fonction à une classe différente.

J'ai un fichier PHP global comprennent toutes les pages et ce fichier PHP global comprend et initie les classes importantes afin que je pourrais utiliser leur dans le système. Sinon chaque classe aurait lancer ces classes et je pense qui examinerait kind of laid.
"Bring forth therefore fruits meet for repentance:" Matthew 3:8
  • Bogey
  • Bogey
  • Genius
  • Avatar de l’utilisateur
  • Inscription: Juil 14, 2005
  • Messages: 8211
  • Loc: USA
  • Status: Offline

Message Juin 24th, 2011, 11:27 pm

Nightslyr a écrit:
ID de faire quelque chose comme ceci :

PHP Code: [ Select ]
public function logged()
{
    // Note, no 'global'.  Why?  Because our user object should
    // have a reference to the db.  'Global' breaks
    // encapsulation, one of the main components of OOP
 
    // Checking if the user is logged in the session table
    $sql = $this->db->build_key_query(array('SELECT'    => 'userID',
                                            'FROM'      => SESSION_TABLE,
                                            'WHERE'     => array('userID' => $this->user_id)));
 
   
    if($this->db->num_rows($sql) == 0 || !isset($_SESSION['u_logged_in']))
    {
        $this->logout();
        return false
    }
       
    return $_SESSION['u_logged_in'];
}
  1. public function logged()
  2. {
  3.     // Note, no 'global'.  Why?  Because our user object should
  4.     // have a reference to the db.  'Global' breaks
  5.     // encapsulation, one of the main components of OOP
  6.  
  7.     // Checking if the user is logged in the session table
  8.     $sql = $this->db->build_key_query(array('SELECT'    => 'userID',
  9.                                             'FROM'      => SESSION_TABLE,
  10.                                             'WHERE'     => array('userID' => $this->user_id)));
  11.  
  12.    
  13.     if($this->db->num_rows($sql) == 0 || !isset($_SESSION['u_logged_in']))
  14.     {
  15.         $this->logout();
  16.         return false
  17.     }
  18.        
  19.     return $_SESSION['u_logged_in'];
  20. }


...maintenant que je regarde elle rapproche, vous reçoivent des erreurs db dans votre deuxième méthode ? Si userID est par défaut null, alors ce serait $ce-&gt; user_id equal ? Serait-ce une valeur utilisable dans une requête db ? Vous travaillez avec des erreurs PHP activés ?

Enfin, une fois de plus, vous utilisez « global » et cette fois dans un objet. Je ne sais pas pourquoi vous sont tellement concentrée sur l'utilisation de « global ». Il n'y a jamais une bonne raison d'utiliser « global ». Jamais. OOP particulier, vous vous cassez encapsulation. Si votre objet nécessite une référence à un objet db afin de travailler, alors composer les deux. Utilisez l'injection de dépendance et faire droit.

À la longue, vous font pas beaucoup bon à l'aide d'objets des types de données simplement comme abstraites. Sa programmation procédurale avec des objets, pas de POO. Si vous voulez jouer avec des objets, vous devez apprendre que certains de la théorie derrière elle et commun des habitudes de consommation. Obtenez Zandstras livre et obtenir le livre de Gang de Fours pour voir comment faire correctement.

Aussi, je ne peux pas utiliser la fonction...lors de la session n'est pas définie, l'utilisateur n'est simplement pas connecté, puis il n'y a aucune raison de lui fermer une session. Mais si la vérification de la fonction obtient la vérification de la base de données puis la session doit être définie (signifie l'utilisateur n'est connecté), et s'il n'y a rien dans la base de données (moyens, l'utilisateur est effectivement connecté à...la base de données prend position dominante) et puis j'ai besoin de déconnecter l'utilisateur.

De cette façon, Id être rediriger l'utilisateur de vous déconnecter lorsque l'utilisateur n'est pas connecté et lorsque l'utilisateur obtient à la fonction de déconnexion, le système vérifie son statut de connexion et découvre que la session n'est pas définie (qui signifie, selon le code, nous devons lui déconnexion) nous rediriger l'utilisateur vers la fonction de déconnexion et ses une boucle sans fin...:(
"Bring forth therefore fruits meet for repentance:" Matthew 3:8
  • Bogey
  • Bogey
  • Genius
  • Avatar de l’utilisateur
  • Inscription: Juil 14, 2005
  • Messages: 8211
  • Loc: USA
  • Status: Offline

Message Juin 24th, 2011, 11:35 pm

J'ai aussi trouvé mon problème...J'ai ma classe SQL mes résultats de mise en cache et si sa mise en cache qu'il faudrait l'info de la mémoire cache de fichiers qui dure pour 1 journée...:lol:
"Bring forth therefore fruits meet for repentance:" Matthew 3:8

Afficher de l'information

  • Total des messages de ce sujet: 5 messages
  • Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 208 invités
  • Vous ne pouvez pas poster de nouveaux sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas éditer vos messages
  • Vous ne pouvez pas supprimer vos messages
  • Vous ne pouvez pas joindre des fichiers
 
 

© 2011 Unmelted, LLC. Ozzu® est une marque déposée de Unmelted, LLC