Foros del Web » Programando para Internet » PHP » CodeIgniter »

User controller (loggeo)

Estas en el tema de User controller (loggeo) en el foro de CodeIgniter en Foros del Web. Buenas... estoy teniendo un problema con la autenticacion en CI... y es que.. cuando me logueo / deslogueo... cambia la tabla ci_sessions peroooo... no se ...
  #1 (permalink)  
Antiguo 06/07/2011, 23:50
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
User controller (loggeo)

Buenas... estoy teniendo un problema con la autenticacion en CI... y es que.. cuando me logueo / deslogueo... cambia la tabla ci_sessions peroooo... no se refleja en un cambio de is_logged() que siempre arroja FALSE


/* Helper: users_helper.php */
Código PHP:
<?php
if ( ! defined('BASEPATH')) exit('No direct script access allowed');

if ( ! 
function_exists('is_logged')){
  function 
is_logged(){
    
$CI =& get_instance();        
    return (
$CI->session->userdata('logged'));  
  }  
}
Hago algo mal ??? imagino que no debo acceder a la DB... deberia funcionar

GRACIAS!!
__________________
Salu2!
  #2 (permalink)  
Antiguo 07/07/2011, 03:08
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 15 años, 9 meses
Puntos: 165
Respuesta: User controller (loggeo)

Tienes que revisar como haces el login, es decir, que nombre de variable usas para acreditar a un usuario. Puede que sea 'is_logged'.

Pon el código que usas para autentificar a un user.

Un saludo!
  #3 (permalink)  
Antiguo 07/07/2011, 05:22
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: User controller (loggeo)

Hola MIKTRV !

Se que tengo que re-organizar el codigo.....pero... los $this->session->set_userdata('loggin',TRUE); estan ahi... amigo

Código PHP:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

/* Controller */
class extends CI_Controller {    
  
    private 
$data=array();
  
    function 
__construct()
    {        
        
parent::__construct();                                          
        
$this->config->set_item('language''spanish');        
        
        
$this->load->library('Blog_lib');
        
$this->data['post_list'] = $this->blog_lib->get_last_entries(3);            
    }
    
    public function 
index(){
    
        
$this->load->library('form_validation');
      
      
$this->form_validation->set_error_delimiters('<div class="error">''</div>');
      
      switch (
$this->input->post('funcion')){ // o 'submit'
      
        
case 'login':
         
$this->form_validation->set_rules('username''Username''trim|required|xss_clean');
         
$this->form_validation->set_rules('password''Password''trim|required');
                         
          if (
$this->form_validation->run() == FALSE){    
            
$this->login();
          }else{           
            
$this->load->model('user_m','',TRUE);
                   
            
$udata $this->user_m->get_user($this->input->post('username'),$this->input->post('password'));         
         
            if ( (isset(
$udata[0]->id)) AND ($udata[0]->id 0) ){
              
$this->session->set_userdata('user_id',$udata[0]->id);     
              
$this->session->set_userdata('loggin',TRUE);

              
$this->data['content']= heading('Ingreso exitoso',2); 
            }else{
              
$this->data['content']= heading('Errado!',2); 
            }            
            
$this->view();                 
          } 
        break;
        
        case 
'logout':                          
        break;
        
        default:
          
$this->form_validation->set_rules('email''Email''trim|required|valid_email');    
          
$this->form_validation->set_rules('password''Password''trim|required|matches[passconf]'); // |md5
          
$this->form_validation->set_rules('passconf''Password confirmacion''trim|required');
          
$this->form_validation->set_rules('username''Username''trim|required|min_length[5]|max_length[12]|xss_clean');
        
            if (
$this->form_validation->run() == FALSE){        
            
$this->signup();                
          }else{        
            
$this->success();        
          }          
          break;
      }    
      
    }
    
    function 
success(){
      
$this->load->model('user_m','',TRUE);
    
      
$this->data['content'] = heading("Bienvenido ".$this->input->post('username').'!',2);             
      
      
// Insert into DB
      
$insert $this->input->post();
      unset (
$insert['submit']);
      unset (
$insert['passconf']);      
      
$this->user_m->insert_user($insert);
       
      
/* podria evitarme los unset() si agrego cada campo en la DB
      excepto aquellos que comiencen con i_ por ejemplo */
      
      // Log in
      
$this->session->set_userdata('logged',TRUE);
      
      
$this->view();  
    }
    
    function 
logout(){
      
// o deberia hacer un ->unset_userdata() ?
      // $this->session->sess_destroy(); ???
      
$this->session->set_userdata('logged',FALSE);
      
      
$this->data['content']= heading('Ud ha salido',2); 
      
$this->view();
    }
    
    function 
signup(){      
      
$this->data['form_file'] = 'application/rentabilizaweb/modules/u/views/signup_form.php';  
      
$this->view();     
    }    
            
    function 
login(){    
      
$this->data['form_file'] = 'application/rentabilizaweb/modules/u/views/login_form.php';
      
$this->view();     
    }        
    
   
/* carga vistas de mi template */    
    
function view($data=null){
      if (
$data==null){
        
$data $this->data;
      }
      
      
$this->load->view('tpl/corp/cuts/tpl_begin.php',$data);    $this->load->view('tpl/corp/cuts/tpl_header.php');
      
//$this->load->view('tpl/corp/cuts/tpl_feature.php');
      
$this->load->view('tpl/corp/cuts/tpl_content.php',$data);
      
$this->load->view('tpl/corp/cuts/tpl_sidebar.php',$data);
      
$this->load->view('tpl/corp/cuts/tpl_footer.php');
    }    

}
Que podra ser ? o sea... el controller 'u' SI me cambia el registro del usuario en la base de datos!
__________________
Salu2!
  #4 (permalink)  
Antiguo 07/07/2011, 05:26
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 15 años, 9 meses
Puntos: 165
Respuesta: User controller (loggeo)

Guardas las sesiones en la bbdd o en disco? si es en disco, revisa los permisos del directorio en cuestión y la configuración de tu php.ini.

También haz un if de la session para comprobar que se guarda bien, justo despues de crearla.

Un saludo!
  #5 (permalink)  
Antiguo 07/07/2011, 05:40
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: User controller (loggeo)

[EDITO: SOLUCIONADO]

Hola de nuevo amigo...... mira estoy siguiendo el manual respecto de 'Saving Session Data to a Database'

Graba las sessiones automaticamente en la DB cuando tenes creada la tabla:

Cita:
CREATE TABLE IF NOT EXISTS `ci_sessions` (
session_id varchar(40) DEFAULT '0' NOT NULL,
ip_address varchar(16) DEFAULT '0' NOT NULL,
user_agent varchar(50) NOT NULL,
last_activity int(10) unsigned DEFAULT 0 NOT NULL,
user_data text DEFAULT '' NOT NULL,
PRIMARY KEY (session_id)
);
Concistentemente en mi config.php a nivel de app tengo esto:

Cita:
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 0;
$config['sess_expire_on_close'] = FALSE;
$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'] = TRUE;
$config['sess_time_to_update'] = 300;
Y veo que actualiza el registro que corresponda.......

AMIGO...gracias por el consejo...era que usaba loggin y logged ja... cambiaba de nombre

GRACIAS por apoyarme
__________________
Salu2!

Última edición por Italico76; 07/07/2011 a las 05:47
  #6 (permalink)  
Antiguo 07/07/2011, 06:34
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 15 años, 9 meses
Puntos: 165
Respuesta: User controller (loggeo)

Solucionado entonces?

Jeje me alegroo , suerte, un saludo!

Etiquetas: controller, frameworks-y-php-orientado-a-objetos, php, usuarios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:26.