Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/01/2011, 21:17
Avatar de alcide
alcide
 
Fecha de Ingreso: diciembre-2008
Mensajes: 52
Antigüedad: 15 años, 5 meses
Puntos: 0
Pregunta sess_destroy() in Codeigniter

Hola Comunidad.!
Tengo un problema en la función (método) que le muestro a continuación.
Sucede que yo quiero que los usuarios autenticados puedan cambiar sus datos de usuario en la base de datos es decir (Nombre, email ó clave). Cuando un usuario cambia su nombre, email y no modifica su clave todo marcha bien, se actualizan sus datos y el usuario continúa autenticado. Pero cuando el usuario autenticado cambia la clave Codeigniter me cierra la sessión y el usuario tiene que volver a loguearse con la clave nueva, que creen ustedes que pueda estar ocurriendo.
Me inspiré para realizar mi sistema de autenticación en la clase controlador usuarios y la librería centinela de noquieroprogramar.com
Saludos.
Vista


Código:
//Le paso el Nick por URL del usuario autenticado
//http://localhost/aseguro/index.php/usuarios/chgpw/avali2
function chgpw($nick=""){
      
    if($nick!=""){
   $nick=$this->uri->segment(3);   
      
      $this->load->library('validation');   
   
      
      $reglas['nombre']       ="required|min_length[8]|max_length[50]|xss_clean";
      $reglas['mail']         ="trim|required|valid_email";   
      $reglas['newclave']      ="trim|required|min_length[4]|max_length[12]|matches[r_clave]";
      $reglas['r_clave']      ="trim|required";
      $reglas['oldclave']      ="trim|required|min_length[4]|max_length[12]|callback__check_oldclave";

         
      $this->validation->set_rules($reglas);
      
      $campos['nombre']       ="<b>Nombre y Apellidos</b>";       
      $campos['mail']         ="<b>Correo Electr&oacute;nico</b>";
      $campos['oldclave']      ="<b>Contrase&ntilde;a actual</b>";   
      $campos['newclave']      ="<b>Contrase&ntilde;a nueva</b>";
      $campos['r_clave']      ="<b>Repetir Contrase&ntilde;a</b>";
      
      $this->validation->set_fields($campos);            
      
      
      $this->validation->set_error_delimiters('<em>', '</em>');
      
      if(!$this->validation->run())
      {
   $this->db->where('nick', $nick);
   $q = $this->db->get('usuarios');
   $data['query']=$q;
         $this->load->view("cabecera");
         $this->load->view('usuarios/chgpw',$data);   
         $this->load->view("pie");
      }
      
      else
      
      {
         
$nombre=$this->input->post('nombre');
$newclave=sha1($this->input->post('newclave'));
$mail=$this->input->post('mail');      
      
         $update = array(
               'nombre' => $nombre,
               'clave' => $newclave,
               'mail' => $mail
               
            );
       
$this->db->where('nick', $nick);
$this->db->update('usuarios', $update);
redirect('usuarios/index/update_ok');
               
      }
      
         
   
   }
else {
         
         $this->load->view("cabecera");
         $this->load->view("usuarios/error");
         $this->load->view("pie");
      }            
   
      
}