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ónico</b>"; $campos['oldclave'] ="<b>Contraseña actual</b>"; $campos['newclave'] ="<b>Contraseña nueva</b>"; $campos['r_clave'] ="<b>Repetir Contraseñ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"); } }