2010-12-03 3 views
2

J'utilise la bibliothèque auth tank de codeigniter pour travailler avec les utilisateurs et cela a fonctionné très bien. Chaque fois que je tente d'accéder à un contrôleur, la fonction vérifie si l'utilisateur est connecté comme ceci: S'il est connectéCodeigniter tank auth - l'utilisateur est déconnecté pour une raison inconnue

if($this->tank_auth->is_logged_in()) { 

, je charge le modèle, mais sinon, je fais un redirection vers la page de connexion. Cela a fonctionné comme ceci pendant un mois mais maintenant j'étends mon application et ai construit quelques autres contrôleurs qui emploient la même technique mais les dossiers sont situés dans l'autre dossier. L'application de travail précédente fonctionne toujours très bien mais dans cette application du nouveau dossier (c'est fondamentalement un nouveau module pour cette application, utilise la même page de connexion mais redirige différemment selon la sélection de l'utilisateur du module) je peux me connecter correctement, je peux faire un n'importe quelle demande au contrôleur sans problèmes mais à un certain moment, il me dit que l'utilisateur n'est pas connecté. Ce n'est pas la session expirée ou quelque chose, c'est comme si je fais une demande maintenant, prolongeant ma session et la suivante à 3 secondes L'intervalle permet à l'utilisateur de se déconnecter ... Je n'ai rien fait de différent avec mes nouveaux contrôleurs, mais après un certain temps, parfois ça prend 5 minutes, parfois 15 minutes, ça se déconnecte ... Je ne sais pas pourquoi, est quelque chose de déconner avec ma session? Je n'utilise pas de session pour autre chose ...

Quelqu'un sait de quoi il s'agit? Ou une suggestion? Je peux donner plus de détails si demandé.

Merci beaucoup.

EDIT: Le nouveau module consiste à plusieurs contrôleurs dans la même Codeigniter instalation, il fonctionne avec la même configuration de CI, même bibliothèque auth du réservoir et les fonctions sont copiés sur le contrôleur principal de demandes similaires:

class Requests extends Controller 
{ 
    function __construct() 

    { 
     parent::__construct(); 

     $this->load->helper(array('form', 'url')); 
     $this->load->helper('date'); 
     $this->load->library('form_validation'); 
     $this->load->library('tank_auth'); 
    } 

.............. 
more functions 
.............. 

    function getServices() { /// One of the functions that the new module uses 
      if (!$this->tank_auth->is_logged_in()) { 
       return; 
      } else { 
       $this->load->model('requests/getServices'); 
       $data['tid'] = $_POST['tid']; 
       $this->getServices->showData($data); 
      } 

     } 

Répondre

0

Je déconnais avec ma session dans une fonction de téléchargement d'image que j'ai utilisée dans une autre application. J'ai effacé ces lignes de session et maintenant cela fonctionne comme il se doit. Le code de session était le code $ _SESSION natif de PHP au cas où quelqu'un se poserait la question.

Merci.

+0

J'ai le même problème avec un ancien code sur lequel je travaille. Pouvez-vous détailler ce que vous avez fait? Avez-vous supprimé l'utilisation de $ _SESSION directement dans le code? – Strategist

2

Je soupçonne que le délai de disparition du cookie a quelque chose à voir avec $ config ['time_to_update'] (la valeur par défaut est de 300 secondes).

Les cookies sont uniquement mis à jour (réinitialisés) toutes les 5 minutes si aucune variable de session n'est modifiée. Ainsi, il se peut que le cookie devienne invalide du point de vue de la nouvelle partie de l'application, mais la classe Session ne le réalise pas jusqu'à ce que les 300 secondes passent, à quel point il est effacé et l'utilisateur se déconnecte .

Pouvez-vous fournir plus de détails sur l'emplacement du nouveau code. Est-ce dans la même installation de CodeIgniter?

+0

ajouté plus d'infos, merci. –

Questions connexes