elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  manda de nuevo los post del formulario al ir atras en el navegador y actualizar
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: manda de nuevo los post del formulario al ir atras en el navegador y actualizar  (Leído 4,839 veces)
Ethgar

Desconectado Desconectado

Mensajes: 56



Ver Perfil
manda de nuevo los post del formulario al ir atras en el navegador y actualizar
« en: 10 Marzo 2015, 17:39 pm »

Que tal, buenos días, me tope con un problema, tengo un login en una aplicación y se logea correctamente y cuando hago el logout también, borra la sesión, el problema es que cuando hago el logout y vuelvo a la pagina anterior me aparecen los datos del usuario logeado, y al refrescar la pagina me aparece que si deseo confirmar el envío de los datos del formulario, lo que hace que se vuelva a logear. de que manera podria controlar este problema?


En línea

Usuario Invitado


Desconectado Desconectado

Mensajes: 625



Ver Perfil
Re: manda de nuevo los post del formulario al ir atras en el navegador y actualizar
« Respuesta #1 en: 10 Marzo 2015, 18:15 pm »

No sé mucho de PHP, pero ¿porqué no pones en tu controlador frontal que se redirija a login.php cuando no haya sesión?

Código
  1. <?php
  2.      if(!isset($_SESSION['logged_in']))
  3.          header("Location: login.php");
  4. ?>

Y en el logout, remueves la sesión y la destruyes:

Código
  1. <?php
  2.      unset($_SESSION['logged_in']);  
  3.      session_destroy();  
  4. ?>


En línea

"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein
MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: manda de nuevo los post del formulario al ir atras en el navegador y actualizar
« Respuesta #2 en: 10 Marzo 2015, 18:32 pm »

¿Estas utilizando cookies simplemente?
En línea

Ethgar

Desconectado Desconectado

Mensajes: 56



Ver Perfil
Re: manda de nuevo los post del formulario al ir atras en el navegador y actualizar
« Respuesta #3 en: 10 Marzo 2015, 18:37 pm »

MinusFour  estoy utilizando la clase session de CodeIgniter, Gus Garsaky  la session si la destruyo en un controlador llamado logout que me lleva a el login, el problema es que cuand hago logout si me manda al login pero si yo voy a atrás en el navegador puedo llegar a una pagina en la que estuve logeado, y si refresco la pagina manda los datos del formulario , intente destruir las variables post pero aun así lo vuelve a mandar
En línea

MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: manda de nuevo los post del formulario al ir atras en el navegador y actualizar
« Respuesta #4 en: 10 Marzo 2015, 19:03 pm »

MinusFour  estoy utilizando la clase session de CodeIgniter, Gus Garsaky  la session si la destruyo en un controlador llamado logout que me lleva a el login, el problema es que cuand hago logout si me manda al login pero si yo voy a atrás en el navegador puedo llegar a una pagina en la que estuve logeado, y si refresco la pagina manda los datos del formulario , intente destruir las variables post pero aun así lo vuelve a mandar

¿No puedes poner tu código? Si estas destruyendo la sesion propiamente entonces no deberia llevar acabo la funcion normal del script, porque el dato de la sesion no existe.
En línea

Ethgar

Desconectado Desconectado

Mensajes: 56



Ver Perfil
Re: manda de nuevo los post del formulario al ir atras en el navegador y actualizar
« Respuesta #5 en: 10 Marzo 2015, 19:48 pm »

Este es el formulario de login:


Código:
echo form_open('main/login',$form_login);
echo form_label('usuario','usuario');
echo form_input($campo1);
echo form_label('password','password');
echo form_input($campo2);
echo '<br>'.form_input($enviar);
echo form_close();

Este es mi controlador login
Código:
public function login(){
$usuario = $this->input->post('usuario', TRUE);
$password = $this->input->post('password', TRUE); 
$data['res'] = $this->usuarios_model->verTodo();
$this->usuarios_model->login($usuario,$password);
$this->load->view('header',$data);
$this->load->view('verdata');
$this->load->view('footer');
}

Y este mi controlador logout
Código:
public function logout(){
$form_login['form_login'] = array(
'name' => 'login',
'id' => 'login',
'rol' => 'form'
);
$this->session->sess_destroy();
$data['res'] = $this->usuarios_model->verTodo();
$this->load->view('header',$data);
$this->load->view('login',$form_login);
$this->load->view('footer');
}
« Última modificación: 10 Marzo 2015, 20:30 pm por Ethgar » En línea

MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: manda de nuevo los post del formulario al ir atras en el navegador y actualizar
« Respuesta #6 en: 10 Marzo 2015, 21:52 pm »

Este es el formulario de login:


Código:
echo form_open('main/login',$form_login);
echo form_label('usuario','usuario');
echo form_input($campo1);
echo form_label('password','password');
echo form_input($campo2);
echo '<br>'.form_input($enviar);
echo form_close();

Este es mi controlador login
Código:
public function login(){
$usuario = $this->input->post('usuario', TRUE);
$password = $this->input->post('password', TRUE); 
$data['res'] = $this->usuarios_model->verTodo();
$this->usuarios_model->login($usuario,$password);
$this->load->view('header',$data);
$this->load->view('verdata');
$this->load->view('footer');
}

Y este mi controlador logout
Código:
public function logout(){
$form_login['form_login'] = array(
'name' => 'login',
'id' => 'login',
'rol' => 'form'
);
$this->session->sess_destroy();
$data['res'] = $this->usuarios_model->verTodo();
$this->load->view('header',$data);
$this->load->view('login',$form_login);
$this->load->view('footer');
}

No uso CodeIgniter pero no veo en ningun lugar que estes agregando informacion acerca de la sesion, por lo que cuando destruyes la sesion no debe tener ninguna informacion relevante. ¿CodeIgniter no tiene modulos para manejar la autentificacion?
En línea

Ethgar

Desconectado Desconectado

Mensajes: 56



Ver Perfil
Re: manda de nuevo los post del formulario al ir atras en el navegador y actualizar
« Respuesta #7 en: 11 Marzo 2015, 02:42 am »

La agrego en el modelo cuando hace la consulta:
Código:
public function login($usuario,$password){//
$this->db->where('USUARIO',$usuario);
$this->db->from('usuarios');
$consulta = $this->db->get();
if ($consulta->num_rows > 0) {
$this->db->where('PASSWORD',$password);
$this->db->from('usuarios');
$consulta1 = $this->db->get();
if ($consulta1->num_rows > 0) {
$consulta = $consulta->row();
$data = array(
'NOMBRE' => $consulta->NOMBRE,
'APELLIDOS' => $consulta->APELLIDOS,
'USUARIO' => $consulta->USUARIO,
'TIPO_USUARIO' => $consulta->TIPO_USUARIO
);
$this->session->set_userdata($data);
}else{
$this->session->set_flashdata('Mensaje:',"Contraseña incorrecta");
$this->session->keep_set_flashdata('Mensaje:',"Contraseña incorrecta");
}

}else{
$this->session->set_flashdata('Mensaje:',"usuario incorrecto");
}

}
En línea

MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: manda de nuevo los post del formulario al ir atras en el navegador y actualizar
« Respuesta #8 en: 11 Marzo 2015, 03:17 am »

Bueno entonces creo que tiene que ver con la forma en que tu navegador envia la peticion HTTP. Estoy leyendo la especificacion de CodeIgniter y ellos no manejan sesiones de PHP, tienen su propia implementacion basada en cookies, la cual parece ser que es simplemente una serializacion de un arreglo que es guardado en la cookie en si y no del lado del servidor (a menos que uses una base de datos para las sesiones).

No tengo idea si hacen control de las session_ids, pero es posible que estes enviando la cookie de nuevo (con todos los valores asociados) y CodeIgniter no haga un control propio sobre las ids. ¿Estas utilizando el contenido de estas sesiones en cada uno de los controladores? Por ejemplo, en las paginas que vuelves a reenviar la informacion POST y ves toda la informacion del usuario una vez deslogueado.... usas:

Código
  1. $this->session->userdata('USUARIO');
En línea

Ethgar

Desconectado Desconectado

Mensajes: 56



Ver Perfil
Re: manda de nuevo los post del formulario al ir atras en el navegador y actualizar
« Respuesta #9 en: 11 Marzo 2015, 03:43 am »

Así es, lamo el array de sesiones para verificar si hay uno logueado, tienes razón en que al regresar la pagina vuelve el array de la cokie, creo que debo enfocarme por ese lado, gracias por tus respuestas, en cuanto quede resuelto publico la solución, saludos!!!
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
explotar xss en formulario post
Nivel Web
wizache 7 6,612 Último mensaje 12 Febrero 2008, 20:30 pm
por nobuK
Comprawifi manda a su abogado a BitsdeLocos para que retire un post personal
Noticias
wolfbcn 2 3,119 Último mensaje 18 Diciembre 2011, 23:07 pm
por berni69
Prevenir el uso del botón volver atrás del navegador
Desarrollo Web
WHK 3 8,658 Último mensaje 9 Agosto 2013, 20:36 pm
por WHK
[javascript] Recargar página al pinchar botón “atrás” del navegador
Desarrollo Web
MA40 4 7,908 Último mensaje 10 Noviembre 2016, 21:21 pm
por SetzerFF
Al actualizar Windows Update en Windows7 me ha salido un nuevo navegador
Windows
El_Andaluz 6 4,338 Último mensaje 1 Julio 2020, 00:37 am
por El_Andaluz
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines