Foros del Web » Programando para Internet » PHP »

Cerrar Sesión en los Navegadores

Estas en el tema de Cerrar Sesión en los Navegadores en el foro de PHP en Foros del Web. Hola, mi pregunta la coloc acá, puesto que utilicé programación en php para poder hacer una autentificación de usuarios en mi sistema web, y por ...
  #1 (permalink)  
Antiguo 21/02/2011, 00:28
 
Fecha de Ingreso: mayo-2009
Ubicación: Concepción
Mensajes: 27
Antigüedad: 14 años, 11 meses
Puntos: 0
Pregunta Cerrar Sesión en los Navegadores

Hola, mi pregunta la coloc acá, puesto que utilicé programación en php para poder hacer una autentificación de usuarios en mi sistema web, y por supuesto también incluí un enlace para "cerrar sesión".

He usado mozila firefox para realizar las pruebas de forma local, hasta ahí todo bien, y me cierra sesión bien, luego cuando presiono en volver atrás en el navegador, me impide entrar al sistema.

El problema se dá cuando lo pruebo en otros navegadores como Opera o Safari, donde cierro sesión, pero al presionar el botón de "volver atrás" en el navegador sigo entrando en el sitema.

Pensé que quizás era por probarlo de forma local, lo subí a un hosting gratuito, y ocurre lo mismo, funcion Ok con Mozilla Firefox pero con otros navegadores como Opera o Safari no ocurre así. :S

Me gustaría saber si a alguien le ha ocurrido esto, y donde pudiera estar la solución.

Desde ya, muchas gracias.
  #2 (permalink)  
Antiguo 21/02/2011, 04:50
Avatar de AdrianSeg  
Fecha de Ingreso: enero-2010
Mensajes: 595
Antigüedad: 14 años, 3 meses
Puntos: 14
Respuesta: Cerrar Sesión en los Navegadores

Si nos pegas el codigo que utilizas para cerrar la sesión podremos ayudarte...
  #3 (permalink)  
Antiguo 21/02/2011, 10:44
Avatar de gran Wakka  
Fecha de Ingreso: septiembre-2007
Mensajes: 712
Antigüedad: 16 años, 7 meses
Puntos: 48
Respuesta: Cerrar Sesión en los Navegadores

Cita:
Iniciado por AdrianSeg Ver Mensaje
Si nos pegas el codigo que utilizas para cerrar la sesión podremos ayudarte...
100% de acuerdo... sin el código no podremos ayudarte con tu problema.
__________________
Información de Series de TV
Buscas o quieres ser redactor? Ofertas redactor web
  #4 (permalink)  
Antiguo 21/02/2011, 13:57
 
Fecha de Ingreso: diciembre-2010
Mensajes: 788
Antigüedad: 13 años, 4 meses
Puntos: 51
Respuesta: Cerrar Sesión en los Navegadores

Las sesiones no se reestablecen al hacer "history back", el problema debe ser que no estás borrando las cookies.
  #5 (permalink)  
Antiguo 21/02/2011, 14:28
Avatar de jheckson  
Fecha de Ingreso: febrero-2011
Ubicación: $VE->Aragua['Maracay']
Mensajes: 109
Antigüedad: 13 años, 2 meses
Puntos: 8
Respuesta: Cerrar Sesión en los Navegadores

puedes hacer intentado usando esto:

unset($_SESSION['mi_variable_de_autentiticacion']);

y asi para todas tus variables las cuales permiten estar en el sistema autentificado...
y colocas estas lineas en el codigo el cual quieers ejecutar para cerrar la session.
  #6 (permalink)  
Antiguo 21/02/2011, 15:10
 
Fecha de Ingreso: mayo-2009
Ubicación: Concepción
Mensajes: 27
Antigüedad: 14 años, 11 meses
Puntos: 0
Pregunta Respuesta: Cerrar Sesión en los Navegadores

Cita:
Iniciado por gran Wakka Ver Mensaje
100% de acuerdo... sin el código no podremos ayudarte con tu problema.
En el index tengo el siguiente formulario, que lo envía a un archivo validar.php

Código PHP:
            <form name="login_form" method="post" action="validar.php">
            <
table>
            <
tr>
            <
td><p>Usuario</p></td>
            <
td><input type="text" name="nombre_usuario" id="nombre_usuario"></td>
            <
td><p align="right"><img src="images/usuario.png" width="16" height="16"></p></td>
            </
tr>
            
            <
tr>
            <
td><p>Contraseña</p></td>
            <
td><input type="password" name="clave_usuario" id="clave_usuario"></td>
            <
td><p align="right"><img src="images/clave_inicio.png" width="16" height="16"></p></td>
            </
tr>
                
            <
tr>
            <
td></td>
            <
td><input type="submit" name="button" id="button" value="Entrar"></td>
            </
tr>
            </
table>
            </
form

Luego en el archivo validar.php tengo el siguiente código:
Código PHP:
<?php require_once('conexion.php');
$nombre_usuario $HTTP_POST_VARS["nombre_usuario"]; 
$clave_usuario $HTTP_POST_VARS["clave_usuario"]; 


$existeUsuario mysql_db_query("$database_conexion","SELECT nombre_usuario, clave_usuario, nivel_usuario FROM usuarios WHERE nombre_usuario = '$nombre_usuario' AND clave_usuario = '$clave_usuario'",$conexion) or die(mysql_error()); 

if(
mysql_num_rows($existeUsuario) == 1//verifica que existe un nombre de usuario y contraseña validos

    
$datos mysql_fetch_array($existeUsuario); //guarda los datos de la consulta


    
if($datos["nivel_usuario"]== 1//si el nivel de usuario es 1, ingresa a mantenedor.php
    
{     
        
session_start();
        
$_SESSION['nombre_usuario'] = $datos["nombre_usuario"];
        
$_SESSION["autentificado"]= "SI";
        
$_SESSION['nivel_usuario']=$datos["nivel_usuario"];
        
header("location: mantenedor.php");
    }
    
    if(
$datos["nivel_usuario"]== 2//si el nivel de usuario es 2, ingresa a administrador.php
    
{
        
session_start();
        
$_SESSION["nombre_usuario"]= $nombre_usuario;
        
$_SESSION["autentificado"]= "SI";
        
$_SESSION['nivel_usuario']=$datos["nivel_usuario"];
        
header("location: administrador.php");
    }
    
    if(
$datos["nivel_usuario"]== 3//si el nivel de usuario es 3, ingresa a modificador.php
    

        
session_start();
        
$_SESSION['nombre_usuario'] = $datos["nombre_usuario"];
        
$_SESSION["autentificado"]= "SI";
        
$_SESSION['nivel_usuario']=$datos["nivel_usuario"];
        
header("location: modificador.php");
    }
    
    if(
$datos["nivel_usuario"]== 4//si el nivel de usuario es 4, ingresa a consultor.php
    

        
session_start();
        
$_SESSION['nombre_usuario'] = $datos["nombre_usuario"];
        
$_SESSION["autentificado"]= "SI";
        
$_SESSION['nivel_usuario']=$datos["nivel_usuario"];
        
header("location: consultor.php");
    }
    

}

else

header("location: login_error.php"); // si el usuario no existe lo envia a una pagina de error.
}
?>
y en cada página que quiero que sea autentifcado el usuario tengo al principio lo siguiente:

Código PHP:
<?php session_start(); ?>
<?php
    
if ($_SESSION["autentificado"] != "SI"
    { 
        
header("Location: index.php");
        exit(); 
    }
    
?>


Tengo un enlace de "cerrar sesión" al siguiente archivo el cual contiene el siguiente código:


Código PHP:
<?php session_start();
session_destroy(); 
header("location: index.php"); 
?>

HELP! :P
  #7 (permalink)  
Antiguo 21/02/2011, 15:25
 
Fecha de Ingreso: mayo-2009
Ubicación: Concepción
Mensajes: 27
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: Cerrar Sesión en los Navegadores

PD.: En Google Chrome, también funciona OK.
  #8 (permalink)  
Antiguo 21/02/2011, 15:31
 
Fecha de Ingreso: diciembre-2010
Mensajes: 788
Antigüedad: 13 años, 4 meses
Puntos: 51
Respuesta: Cerrar Sesión en los Navegadores

Tenés que hacer un unset($_SESSION['nombre_sesion']); a todas tus sesiones en tu logout, como ya te dijeron antes.
  #9 (permalink)  
Antiguo 21/02/2011, 15:45
 
Fecha de Ingreso: mayo-2009
Ubicación: Concepción
Mensajes: 27
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: Cerrar Sesión en los Navegadores

Cita:
Iniciado por walterdevel Ver Mensaje
Tenés que hacer un unset($_SESSION['nombre_sesion']); a todas tus sesiones en tu logout, como ya te dijeron antes.
Código PHP:
<?php session_start(); 
unset(
$_SESSION['autentificado']); // tendría que agregarlo aquí? y mi variable de sesión en mi caso sería "auntentificado, segun entiendo o.o ? 
session_destroy();  
header("location: index.php");  
?>
  #10 (permalink)  
Antiguo 21/02/2011, 15:54
 
Fecha de Ingreso: diciembre-2010
Mensajes: 788
Antigüedad: 13 años, 4 meses
Puntos: 51
Respuesta: Cerrar Sesión en los Navegadores

No, deberías hacer unset a TODAS tus variables de sesión.
  #11 (permalink)  
Antiguo 21/02/2011, 16:00
 
Fecha de Ingreso: mayo-2009
Ubicación: Concepción
Mensajes: 27
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: Cerrar Sesión en los Navegadores

Cita:
Iniciado por walterdevel Ver Mensaje
No, deberías hacer unset a TODAS tus variables de sesión.
Mi archivo de salir, debiera quedar así?

Código PHP:
<?php session_start();
unset(
$_SESSION['autentificado']);
unset(
$_SESSION['nivel_usuario']);
unset(
$_SESSION["nombre_usuario"]);
session_destroy(); 
header("location: index.php"); 
?>
  #12 (permalink)  
Antiguo 21/02/2011, 16:02
 
Fecha de Ingreso: diciembre-2010
Mensajes: 788
Antigüedad: 13 años, 4 meses
Puntos: 51
Respuesta: Cerrar Sesión en los Navegadores

Si, es así, aunque el session_destroy() está de más si lo haces con el unset
  #13 (permalink)  
Antiguo 21/02/2011, 16:18
 
Fecha de Ingreso: mayo-2009
Ubicación: Concepción
Mensajes: 27
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: Cerrar Sesión en los Navegadores

Cita:
Iniciado por walterdevel Ver Mensaje
Si, es así, aunque el session_destroy() está de más si lo haces con el unset
Pues lo probé de forma local y en un servidor gratuito sacando además el session_destroy(); y aún pasa lo mismo o.o.

Solo cierra la sesión cuando cierro el navegador o la pestaña en la que está.
  #14 (permalink)  
Antiguo 21/02/2011, 16:29
Avatar de jheckson  
Fecha de Ingreso: febrero-2011
Ubicación: $VE->Aragua['Maracay']
Mensajes: 109
Antigüedad: 13 años, 2 meses
Puntos: 8
Respuesta: Cerrar Sesión en los Navegadores

Intenta Asi:

Creaa un boton el cual te mande a un achivo por ejmeplo:

Mi boton
Código HTML:
Ver original
  1. <input type="button" value="Cerrar Session" onClick="window.location = 'cerrar_session.php'">

Mi archivo cerrar_session.php
Código PHP:
Ver original
  1. <?php
  2. session_name("tunombredelasession");
  3.  
  4. unset($_SESSION["todasmisvariablesdesession"]);         //Cerrar Session
  5. unset($_SESSION["oalmenoslasde identificacion"]);  
  6.  
  7. session_write_close();                                 //esto fuerza guardar los cambos realizados
  8.                                                                     //a tus variables de $_SESSION.
  9.                                                                     //recomendable usar antes de un header.
  10. header ('Location:miindex.php');
  11. ?>

porfavor dime si te funciono....
  #15 (permalink)  
Antiguo 21/02/2011, 18:07
 
Fecha de Ingreso: diciembre-2010
Ubicación: valencia
Mensajes: 203
Antigüedad: 13 años, 4 meses
Puntos: 11
Respuesta: Cerrar Sesión en los Navegadores

estas borrando el identificador de la sesion? (la cookie).
  #16 (permalink)  
Antiguo 21/02/2011, 18:25
 
Fecha de Ingreso: mayo-2009
Ubicación: Concepción
Mensajes: 27
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: Cerrar Sesión en los Navegadores

Cita:
Iniciado por jheckson Ver Mensaje
Intenta Asi:

Creaa un boton el cual te mande a un achivo por ejmeplo:

Mi boton
Código HTML:
Ver original
  1. <input type="button" value="Cerrar Session" onClick="window.location = 'cerrar_session.php'">

Mi archivo cerrar_session.php
Código PHP:
Ver original
  1. <?php
  2. session_name("tunombredelasession");
  3.  
  4. unset($_SESSION["todasmisvariablesdesession"]);         //Cerrar Session
  5. unset($_SESSION["oalmenoslasde identificacion"]);  
  6.  
  7. session_write_close();                                 //esto fuerza guardar los cambos realizados
  8.                                                                     //a tus variables de $_SESSION.
  9.                                                                     //recomendable usar antes de un header.
  10. header ('Location:miindex.php');
  11. ?>

porfavor dime si te funciono....
Me arroja lo siguiente:

Código HTML:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\AppServ\www\SAINE\salir.php:9) in C:\AppServ\www\SAINE\salir.php on line 10

Warning: Cannot modify header information - headers already sent by (output started at C:\AppServ\www\SAINE\salir.php:9) in C:\AppServ\www\SAINE\salir.php on line 21
El código es:
Código PHP:
<?php
session_start
();
unset(
$_SESSION['autentificado']);
unset(
$_SESSION['nivel_usuario']);
unset(
$_SESSION['nombre_usuario']);

session_write_close();                    //esto fuerza guardar los cambos realizados
                                                //a tus variables de $_SESSION.
                                                //recomendable usar antes de un header. 
header ('Location: index.php');
?>
Y no tengo declarado un $session_name

Solo tengo lo que puse en el código de mi post.
  #17 (permalink)  
Antiguo 21/02/2011, 18:45
Avatar de jheckson  
Fecha de Ingreso: febrero-2011
Ubicación: $VE->Aragua['Maracay']
Mensajes: 109
Antigüedad: 13 años, 2 meses
Puntos: 8
Respuesta: Cerrar Sesión en los Navegadores

declara un session_name("nombreparatodasmissessiones") justo antes del session_(); asi como en el codigo que te envie... y si no funciona intenta esto.

Ese codigo el cual te pase deberia funcionar... y ese error puede ser por estas causas...

1. No dejes espacios o saltos de linias antes antes de cualquier <?php o despues de ?> esto porque PHP por podriamos decir que es delicado, (exacatamente porq, no se xD pero me ha funcionado)

2. session_start() debe ser ejecutado antes de cualquier salida HTML... (ponlo siempre al inicio de codigo de cada archivo donde las utilizes, incluso ates de un include)

3. o es un error por tu configuracion de tu archivo de los de tu programa que te permite correr en localhost....

aunque en este link esta la explicacion mejor.

[URL="http://www.comunidadhosting.com/programacion-y-diseno-web/1657-error-php-warning-cannot-modify-header-information-headers-already-sent.html"]http://www.comunidadhosting.com/programacion-y-diseno-web/1657-error-php-warning-cannot-modify-header-information-headers-already-sent.html[/URL]
  #18 (permalink)  
Antiguo 21/02/2011, 19:29
 
Fecha de Ingreso: mayo-2009
Ubicación: Concepción
Mensajes: 27
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: Cerrar Sesión en los Navegadores

Muchas Gracias. :)

Etiquetas: cerrar, navegadores, sesión
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 22:30.