Foros del Web » Programando para Internet » PHP »

session_destroy()

Estas en el tema de session_destroy() en el foro de PHP en Foros del Web. compañeros(as). Me gustaria saber como le hago para que cuando ya tengo autentificado el usuario y este en su espacio seguro, como lo desconecto de ...
  #1 (permalink)  
Antiguo 15/11/2006, 09:13
 
Fecha de Ingreso: marzo-2004
Ubicación: Chile
Mensajes: 382
Antigüedad: 20 años, 1 mes
Puntos: 0
session_destroy()

compañeros(as).

Me gustaria saber como le hago para que cuando ya tengo autentificado el usuario y este en su espacio seguro, como lo desconecto de su session, sin cerrar el navegador osea el tipico link que dice cerrar session o desconectarse, osea que si quiere desconectarse como manualmente el mismo usuario.

He buscado algunos datos por ahii y segun lo que averigue, que es esto:


El primer paso para cerrar una sesión, es "desregistrar" todas las variables. Para ello, emplearemos la sentencia session_unregister(). Su funcionamiento es idéntico a la función session_register(), con la salvedad de que sólo podemos quitar el regitro de una de las variables a la vez.

Si lo deseamos quitar el registro de todas las variables de una sola vez, la función a emplear será session_unset().

Una vez realizada esta tarea, sólo nos queda terminar la sesión, cosa que haremos con facilidad con la siguiente sentencia: session_destroy().



El problema esta es que yo en ningun momento registro mi session, entonces tan solo deberia poner session_destroy(), y si tuviera que poner eso deberia crear un script y llamarlo de cada pagina.

seria algo asi:

Código PHP:
<?php
    session_destroy
();
    
header("Location: index2.php");
?>
Se agradece compañeros su atencion
  #2 (permalink)  
Antiguo 15/11/2006, 09:34
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 19 años, 2 meses
Puntos: 20
Código PHP:
<?
//Al usar el boton se cierra la sesion
 
if ($_POST['CerrarSesion']) 
{
session_destroy();

    
//Y redirecciona
    
header("Location: index2.php"); 
}


//Formulario con el boton
?>

<form method="POST">
<input type="submit" name="CerrarSesion" value="Cerrar Sesion">
<form>
  #3 (permalink)  
Antiguo 15/11/2006, 12:54
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Les faltó usar session_start() antes de pretender destruir la sesión en curso (y si usaron session_name() para darle nombre a la sesión "presonalizado" también es necesario usarlo).

El procedimiento correcto para destruir una sesión lo tienen en la documentación oficial de PHP:
www.php.net/session_destroy

El texto que indicas sobre " session_unregister()", " session_register()" y demás .. NO aplica si usas los arrays superglobales $_SESSION que es lo que deberías usar. (Esa información está desactualiza y no es seguro ese método de trabajo con sesiones).


Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #4 (permalink)  
Antiguo 15/11/2006, 13:48
 
Fecha de Ingreso: marzo-2004
Ubicación: Chile
Mensajes: 382
Antigüedad: 20 años, 1 mes
Puntos: 0
Unas dudas....

Lo que pasa es que yo ya tengo session_start() al principio de la pagina.

Es necesario hacer nuevamente session_star() ya que en la pagina que quiero desconectar al usuario ya posee un session_star() o seria en otro script que que tendria qe hacer y desde la pagina que quiero que el usuario se desconecte llamar a este script tan solo para desconectarme

Pero si fuera que poner otra session_star() en la pagina que deseo desconectar tendria dos sessiones o me equivoco y si no me equivocara cual de las dos eliminaria o eliminaria las dos o todas las sessiones.

algo asi:

desconectar_session.php


pagina que el usuario se podria descinectar por si mismo.

ver_datos.php


entonces de ver_datos.php tendria que llamar a desconectar_session.php y en esta ultima tener nuevamente session_star().

algo asi seria.

se agradece sus repuestas
  #5 (permalink)  
Antiguo 15/11/2006, 13:59
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Session_start() tienes que usarlo en cada script que necesites acceder a una variable de sesión o destruirla.

Create un script tipo

destruir_sesion.php
Código PHP:
<?php
// Initialize the session.
// If you are using session_name("something"), don't forget it now!
session_start();

// Unset all of the session variables.
$_SESSION = array();

// If it's desired to kill the session, also delete the session cookie.
// Note: This will destroy the session, and not just the session data!
if (isset($_COOKIE[session_name()])) {
   
setcookie(session_name(), ''time()-42000'/');
}

// Finally, destroy the session.
session_destroy();

// Y redireccionas a donde quieras ir ...
header ("Location: dondequieras.php");
exit;
?>
Y donde quieras (en tus scripts de tu aplicación .. ) colocas un link para "logout" que apunte a ese script.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #6 (permalink)  
Antiguo 16/11/2006, 05:36
 
Fecha de Ingreso: marzo-2004
Ubicación: Chile
Mensajes: 382
Antigüedad: 20 años, 1 mes
Puntos: 0
Gracias david M G y gracias cluster.

Me funciona perfectamente.

Saludos Cordiales.
  #7 (permalink)  
Antiguo 28/12/2006, 18:15
 
Fecha de Ingreso: agosto-2006
Mensajes: 78
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: session_destroy()

Cita:
Iniciado por Cluster Ver Mensaje
Session_start() tienes que usarlo en cada script que necesites acceder a una variable de sesión o destruirla.

Create un script tipo

destruir_sesion.php
Código PHP:
<?php
// Initialize the session.
// If you are using session_name("something"), don't forget it now!
session_start();

// Unset all of the session variables.
$_SESSION = array();

// If it's desired to kill the session, also delete the session cookie.
// Note: This will destroy the session, and not just the session data!
if (isset($_COOKIE[session_name()])) {
   
setcookie(session_name(), ''time()-42000'/');
}

// Finally, destroy the session.
session_destroy();

// Y redireccionas a donde quieras ir ...
header ("Location: dondequieras.php");
exit;
?>
Y donde quieras (en tus scripts de tu aplicación .. ) colocas un link para "logout" que apunte a ese script.

Un saludo,
Disculpar, pero sobre este hilo tambien he utilizado el script que indicas Cluster para hacer logout a los usuarios tras acceder a la pagina, lo unico que tras efectuar el logout y redirigirlos con el header ;

header ("Location: dondequieras.php");

He observado que si hago con el navegador la opcion "Atras" vuelve a cargar la pagina donde el usuario estaba logeado, es porque se quedan en la cache del navegador?

gracias por la ayuda,
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 2 personas




La zona horaria es GMT -6. Ahora son las 06:57.