Foros del Web » Programando para Internet » PHP »

Como terminar sesion?

Estas en el tema de Como terminar sesion? en el foro de PHP en Foros del Web. hola,el problema que tengo es que no puedo terminar la sesion de un usuario,ya que al hacer click en el boton finalizar sesion de mi ...
  #1 (permalink)  
Antiguo 03/05/2006, 19:26
 
Fecha de Ingreso: febrero-2006
Mensajes: 446
Antigüedad: 18 años, 2 meses
Puntos: 3
Como terminar sesion?

hola,el problema que tengo es que no puedo terminar la sesion de un usuario,ya que al hacer click en el boton finalizar sesion de mi sistema,salgo de el,pero si hago click en el boton volver del explorador,puedo ingresar nuevamente al sistema y ocuparlo como si no hubiese cerrado la sesion.
como puedo solucionar ese problema?, y aqui destaco el codigo que utilizo para cerrar la sesion.
gracias

En este archivo php,inicio mi sesion,despues de ingresar el rut de usuario y password
Código PHP:
if (mysql_num_rows($rs)!=0){

//Consulta para tomar el rut
$resultadomysql_query("SELECT * FROM usuarios WHERE usu_rut_persona='$rut'",$conn);
$rowmysql_fetch_array($resultado);

    
//usuario y contraseña válidos
    //defino una sesion y guardo datos
    
session_start();

    
$_SESSION['rut']=$row['rut'];
    
session_register("autentificado");
   
$_SESSION['autentificado']= "SI";


 switch(
$_POST["valor"])
 {
 case 
1:include("acceso_root.php");
 break;

 case 
2:include("acceso_jefe.php");
 break;

 case 
3:include("acceso_trabajador.php");
 break;
 }

}else {
    
//si no existe le mando otra vez a la portada
    
header("Location:/sistema_productos/logins/login.php?errorusuario=si");

    }
mysql_free_result($rs);
mysql_close($conn);
?> 
Este codigo lo agrego al comienzo de todas mis paginas php,para iniciar la sesion.
Código PHP:
<?php
session_start
();
echo 
$_SESSION['autentificado'];
?>
y luego para terminar mis sesiones,hago un enlace a la pagina salir.php,la cual termina y me redirecciona al index.php.

salir.php
Código PHP:
<?php
session_start
();
session_unregister()
session_unset();
session_destroy();
?>
<html>
<head>
        <title>Fin de la Sesion</title>
</head>

 <?php
 header 
("Location: /sistema_productos/index.php");
 
?>

 <body>
</body>
</html>
  #2 (permalink)  
Antiguo 03/05/2006, 21:24
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
la forma recomendada es borrar la matriz $_SESSION en vez de usar session_unregister, de la siguiente forma:
Código PHP:
$_SESSION = array() 
Por otro lado, tené en cuenta que las cabeceras (header) NO FUNCIONAN si ya mandaste algún texto al navegador, por lo que en tu ejemplo la redirección no va a funcionar.

Saludos.
  #3 (permalink)  
Antiguo 03/05/2006, 23:14
 
Fecha de Ingreso: febrero-2006
Mensajes: 446
Antigüedad: 18 años, 2 meses
Puntos: 3
la redireccion no me funciono,no entendi como borrar la matriz

que deberia modificar en mi codigo,para que me borre la matriz?,session_unregister(); lo borre,porque me daba error.

y mi ultima consulta,como puedo redireccionar,despues de terminar la sesion?
gracias
Código PHP:
<?php
session_start
();
session_unset();
session_destroy();
?>
  #4 (permalink)  
Antiguo 04/05/2006, 04:41
 
Fecha de Ingreso: abril-2006
Mensajes: 268
Antigüedad: 18 años
Puntos: 2
Como dijo alvlin, no puede haber salida de html antes de un header(). Tendrias que redireccionar despues del session_destroy() sin imprimir nada de html antes. Si queres mostrar un mensaje que indique que la sesion termino, lo podes hacer en la página a la que redirigis.

Código PHP:
<? 
session_start
(); 
session_unregister() 
session_unset(); 
session_destroy(); 
header("Location: index.php"); // O podrias ir a fin_sesion.php parar mostrar un mensaje de fin de sesion
?>
Saludos.
  #5 (permalink)  
Antiguo 04/05/2006, 11:45
 
Fecha de Ingreso: febrero-2006
Mensajes: 446
Antigüedad: 18 años, 2 meses
Puntos: 3
gracias por las respuestas,pero me sigue pasando lo mismo,termino la sesion e igual puedo volver al sistema con el boton de retorno que tiene el navegador,y me deja ocupar todas las funciones,por lo cual no me acaba con la sesion.
Como puedo solucionar ese problema?
gracias

Código PHP:
<?php
session_start
();
session_unregister();
session_unset();
session_destroy();
header("location:/sistema_productos/index.php");
?>
cuando dejo mi codigo de esta manera,me arroja un warning con session_unregister();

Código:
Warning: Wrong parameter count for session_unregister() in C:\wamp\www\sistema_productos\sesion\salir.php on line 3

Warning: Cannot modify header information - headers already sent by (output started at C:\wamp\www\sistema_productos\sesion\salir.php:3) in C:\wamp\www\sistema_productos\sesion\salir.php on line 6
Si luego,dejo como comentario session_unregister();,me arroja este warning:
Código:
Warning: session_destroy() [function.session-destroy]: Session object destruction failed in C:\wamp\www\sistema_productos\sesion\salir.php on line 5

Warning: Cannot modify header information - headers already sent by (output started at C:\wamp\www\sistema_productos\sesion\salir.php:5) in C:\wamp\www\sistema_productos\sesion\salir.php on line 6
y si dejo session_unregister y session_unset,como comentario,no me da problemas,pero no me termina la sesion,ya que despues puedo,volver con el boton del navegador.
la linea 6 es en donde tengo el header
  #6 (permalink)  
Antiguo 04/05/2006, 12:00
 
Fecha de Ingreso: febrero-2006
Mensajes: 446
Antigüedad: 18 años, 2 meses
Puntos: 3
ahora que deje como comentario session_unregister();,me termina la sesion,y el warning no se porque me salia.

una ultima consulta:como puedo impedir,que se vuelva atras con el boton del navegador,despues de terminar la sesion.
gracias
  #7 (permalink)  
Antiguo 04/05/2006, 12:06
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 19 años, 1 mes
Puntos: 33
De acuerdo

Te sugiero que te des una vuelta por las FAQ's del foro de Javascript.
  #8 (permalink)  
Antiguo 04/05/2006, 12:06
 
Fecha de Ingreso: abril-2006
Mensajes: 268
Antigüedad: 18 años
Puntos: 2
No deberias utilizar session_register() o session_unregister(). El script para terminar la sesion deberia ser simplemente asi:

Código PHP:
<?
session_start
();
session_unset();
session_destroy();
header("Location: /sistema_productos/index.php");
?>
En tu script, el error del header() te lo da porque antes hay salida de html para indicarte el warning anterior.
Por otro lado, para que no se pueda acceder a tus paginas despues de destruir la sesion, deberias verificar si existe alguna determinada variable de session y si no es asi terminar la sesion y no mostrar la pagina. Seria mas o menos asi:

Código PHP:
<?
session_start
();
if (!isset(
$_SESSION['autenticado'])) {
   
header("Location: destruir_sesion.php");
   exit;
}
....
?>
Si no haces algo asi, al recargar la pagina despues de destruir la sesion, esta se va a volver a crear (la sesion) y la página se cargara igual. Y en tu script no veo que haya alguna comprobación como esa.
Saludos.

Edito: si lo haces de esta forma, no necesitas tal cosa como evitar el botón "volver atras". Igualmente, si podes evitar eso, el usuario podrias pedir nuevamente la página simplemente escribiendo su dirección. La solución es hacer algo parecido a lo que te dije (que es lo que se utiliza): utilizar una variable de sesion para permitir o no el acceso a tus scripts.
  #9 (permalink)  
Antiguo 04/05/2006, 13:17
 
Fecha de Ingreso: febrero-2006
Mensajes: 446
Antigüedad: 18 años, 2 meses
Puntos: 3
muchas gracias Notwen,me faltaba este script,ahora ya no tengo problemas con el boton volver del navegador.
Código PHP:
<? 
session_start
(); 
if (!isset(
$_SESSION['autenticado'])) { 
   
header("Location: destruir_sesion.php"); 
   exit; 

.... 
?>
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 00:17.