Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/10/2012, 15:50
accxell_ax3c
 
Fecha de Ingreso: febrero-2011
Ubicación: quito
Mensajes: 19
Antigüedad: 13 años, 3 meses
Puntos: 0
Mensaje La cookie de sesion no semantiene

Estimados:

Tengo problemas con mis datos de sesiones en codeigniter, cada vez que se cambia de controlador la session se crea de nuevo pero no se mantienen los userdata explico como tengo configurado mi framework.

Código PHP:

$config
['sess_cookie_name']        = 'cendendt.com';
$config['sess_expiration']        = 300;
$config['sess_expire_on_close']    = TRUE;
$config['sess_encrypt_cookie']    = FALSE;
$config['sess_use_database']    = TRUE;
$config['sess_table_name']        = 'ci_sessions';
$config['sess_match_ip']        = FALSE;
$config['sess_match_useragent']    = FALSE;
$config['sess_time_to_update']    = 300
como pueden ver he modificado algunos parámetros, he estado cambiando los valores pero no funciona, cada vez que se carga una pagina diferente se reinicia la cookie... estaba revisando los valores de la cookie y me di cuenta que se reiniciaban cada vez que se cambia de controlador, e la base de datos pasa lo mismo solamente cuando cambio de controlador se crea un nuevo registro de la cookie con los valores por defecto, perdón si estoy mal pero tengo entendido que la galleta debería mantenerse por 300 segundos según mi configuración pero esto no está pasando. ¿Que es lo que estoy haciendo mal?

También he probado con las dos maneras de cargar la librería de session, lo hice con el autoload y lo hice desde el constructor de cada controlador. pero la situación es la misma. ya me leí el manual de session de framework y no se que es lo que estoy omitiendo.. :(

Código PHP:

    
/**
    * Funcion constructora
    */
    
public function __construct(){
        
parent::__construct();        

        
$this->load->library('session')    ;
        
$this->load->model('m_basedatos');        
        
$this->load->library('form_validation');        
    } 
Forma e la que agrego información a session, lo cual funciona muy bien

Código PHP:

$sesion_data 
= array(
                                
'user' => $usuario,
                                
'estado' => 'loged'
                                
);
            
$this->session->set_userdata($sesion_data); 
Este es el codigo completo de la clase


Código PHP:

    
/**
    * Carga datos principales de la pagina como titulo 
    * y foco en los menus
    */    
    
private function informacion(){
        
self::$Data_['titulo'] = 'Identfíquese...';    
        
self::$Data_['ok'] = '<div class="hero-unit container">Bienvendido, Si no puede ingresar Click 
                        <a class="btn btn-info"href="'
.    base_url() . 'index.php/clientes">Aquí</a></div>';
    }        

    
/**
    * Pagina principal de la clase
    */
    
public function index(){    
        
//destruimos posibles datos de session 
        
$this->session->sess_destroy();
        
//construimos informacion inportante
        
$this->informacion();

        
$this->Pagina_ $this->load->view('v_acabecera',self::$Data_,true);
        
$this->Pagina_ $this->Pagina_ $this->load->view('v_login','',true);
        
$this->Pagina_ $this->Pagina_ $this->load->view('v_fpie','',true);
        print 
$this->Pagina_;

    }
    
/**
    * Validamos los datos del usuario contra la base de datos
    */
    
public function identificar(){        
        
//construimos informacion inportante
        
$this->informacion();

        
$usuario;
        
$pass;

        
$this->SessionUser_ $this->input->post('usuario');
        
$this->SessionPass_ $this->input->post('pass');
        
$usuarios $this->db->get('usuarios');

        foreach (
$usuarios->result() as $key) {
             
$usuario =  $key->Usuario;
            
$pass $key->Pass;
        }
        
//caso en el que el usuario y la contraseña coinciden
        
if (($usuario == $this->SessionUser_)&&($pass == $this->SessionPass_)):

            
$sesion_data = array(
                                
'user' => $usuario,
                                
'estado' => 'loged'
                                
);
            
$this->session->set_userdata($sesion_data);

            
$this->Pagina_ $this->load->view('v_acabecera',self::$Data_);
            print (
self::$Data_['ok']);
            
$this->Pagina_ $this->Pagina_ $this->load->view('v_fpie','');    
            
        
//cuando no coincide el usuario y/o la contraseña
        
else:                    
            
self::$Data_['error'] = '<div class="alert"> Lo Siento El <b>Usuario</b> o La <b>Contraseña</b> 
                                    No Coinciden, Intentelo Nuevamente...</div>'
;    
            
$this->Pagina_ $this->load->view('v_acabecera',self::$Data_,true);
            
$this->Pagina_ $this->Pagina_ $this->load->view('v_login',self::$Data_,true);
            
$this->Pagina_ $this->Pagina_ $this->load->view('v_fpie','',true);            
        print 
$this->Pagina_;
        endif;
    }
    
    public function 
salir(){
        
$this->index();
    }

Y este es la parte de codigo de un controlador

Código PHP:

class Clientes extends CI_Controller{    
    private 
$Pagina_;
    private 
$CatalogoVistas_;
    private 
$Tabla_ 'clientes';
    private 
$Config_;
    private 
$Limit_;    
    private 
$Offset_ 50;


    public function 
__construct(){
        
parent::__construct();        
        
$this->load->library('session')    ;
        
$this->load->model('m_basedatos');
        
$this->load->library('pagination');
        
$this->load->library('form_validation');
    }


    private function 
contenidos(){
        
$this->CatalogoVistas_ = array(
                                    
'v_acabecera' => array('titulo' => 'Clientes'),
                                    
'v_bmenu' => array('titulo' => 'Clietes Cendendt')                                    
                                    );
        return 
$this->CatalogoVistas_;
    }

var_dump($this->session->all_userdata()); 
y eso solo me devuelve losvalores por defecto y no los que yo igresé.

Estaba checando los Logs y dejé un resumen de lo que me parece es lo mas importante esto es en lavisita de cuatro paginas las dos primeras son el mismo controlador y las dos ultimas son de dos controladores diferentes


DEBUG - 2012-10-05 22:06:23 --> Global POST and COOKIE data sanitized
DEBUG - 2012-10-05 22:06:23 --> Config file loaded: application/config/config.php
DEBUG - 2012-10-05 22:06:23 --> Session Class Initialized
DEBUG - 2012-10-05 22:06:24 --> File loaded: application/views/v_login.php
DEBUG - 2012-10-05 22:06:24 --> Final output sent to browser
DEBUG - 2012-10-05 22:06:24 --> Total execution time: 0.2434


DEBUG - 2012-10-05 22:06:27 --> Global POST and COOKIE data sanitized
DEBUG - 2012-10-05 22:06:27 --> Config file loaded: application/config/config.php
DEBUG - 2012-10-05 22:06:27 --> Session Class Initialized
DEBUG - 2012-10-05 22:06:27 --> A session cookie was not found.
DEBUG - 2012-10-05 22:06:27 --> Session routines successfully run
DEBUG - 2012-10-05 22:06:27 --> Final output sent to browser
DEBUG - 2012-10-05 22:06:27 --> Total execution time: 0.2088

DEBUG - 2012-10-05 22:06:28 --> Global POST and COOKIE data sanitized
DEBUG - 2012-10-05 22:06:28 --> Session Class Initialized
DEBUG - 2012-10-05 22:06:28 --> Helper loaded: string_helper
DEBUG - 2012-10-05 22:06:28 --> A session cookie was not found.
DEBUG - 2012-10-05 22:06:29 --> Session routines successfully run
DEBUG - 2012-10-05 22:06:29 --> Final output sent to browser
DEBUG - 2012-10-05 22:06:29 --> Total execution time: 0.2104

DEBUG - 2012-10-05 22:06:30 --> Global POST and COOKIE data sanitized
DEBUG - 2012-10-05 22:06:30 --> Session Class Initialized
DEBUG - 2012-10-05 22:06:30 --> Helper loaded: string_helper
DEBUG - 2012-10-05 22:06:30 --> A session cookie was not found.
DEBUG - 2012-10-05 22:06:30 --> Session routines successfully run
DEBUG - 2012-10-05 22:06:30 --> Final output sent to browser
DEBUG - 2012-10-05 22:06:30 --> Total execution time: 0.2479


Veo que en todas me dice que no e ha encontrado la cookie "A session cookie was not found"


Espero que me puedan ayudar, para mi es muy importante, no entiendo porque no puedo hacer funcionar las benditas sesiones