Foros del Web » Programando para Internet » PHP »

session_unset() vs session_destroy()

Estas en el tema de session_unset() vs session_destroy() en el foro de PHP en Foros del Web. Hola, teniendo el siguiente codigo en php para deslogear a un usuario: <?php // *** Logout the current user. $logoutGoTo = "../home.php"; if (!isset($_SESSION)) { ...
  #1 (permalink)  
Antiguo 12/11/2008, 12:43
 
Fecha de Ingreso: noviembre-2008
Mensajes: 122
Antigüedad: 15 años, 5 meses
Puntos: 4
Pregunta session_unset() vs session_destroy()

Hola, teniendo el siguiente codigo en php para deslogear a un usuario:

<?php
// *** Logout the current user.
$logoutGoTo = "../home.php";
if (!isset($_SESSION)) {
session_start();
}
$_SESSION['MM_Username'] = NULL;
$_SESSION['MM_UserGroup'] = NULL;
unset($_SESSION['MM_Username']);
unset($_SESSION['MM_UserGroup']);

// Agregado mio: destruyo la sesion
session_destroy();

//Agregado mio: Borro la cookie agregada al logearse
setcookie("MM_Username", "", time()-1800);

if ($logoutGoTo != "") {header("Location: $logoutGoTo");
exit;
}
?>

Resulta que en varios foros he visto acerca de la recomendación del uso de session_destroy, pero nada aclaran acerca del contenido de sus parametros; es decir: arriba transcribi tal cual el codigo que me genera dreamweaver 8, solo le agregue un par de lineas (las que comento con "Agregado mio"), entonces, mi duda es la siguiente: tengo que poner:

session_destroy($_SESSION['MM_Username']);
session_destroy($_SESSION['MM_UserGroup']);

o simplemente un solo session_destroy() y sin parámetros???

Se que unset se usa para dejar sin valor (resetear) a las variables q se usan en la sesion, que en este caso es 'MM_Username' y que destroy elimina todos los datos asociados con la sesión, entonces si la sesión solo usa 'MM_Username' no debería agregarlo en el session_destroy() ?

Por otro lado: $_SESSION['MM_Username'] donde 'MM_Username' es el nombre del usuario pero $_SESSION['MM_UserGroup'] = $loginStrGroup; ?? A eso lo genera solo dreamweaver y como se usa tambien es este archivo para deslogearse.. no me queda claro su finalidad.

Puede ser que session_unset() sea util usarlo solo en los casos en que se tenga un sitio tipo carrito de compras? Porque en mi sitio solo tengo usuarios que se validan para poder entrar y hacer determinadas cosas, con lo cual una vez que se deslogearon ya no vuelven a entrar, asique imagino q para mi codigo no haria falta poner eso de:
unset($_SESSION['MM_Username']);
unset($_SESSION['MM_UserGroup']);
y solo bastaria con session_destroy()..

Bueno, no lo se.. he buscado bastante en los foros, pero nada con un ejemplo de codigo generado dreamweaver.
Intente ser lo más clara posible. Seguro que vuestra ayuda será de mucha utilidad. Graciass!
  #2 (permalink)  
Antiguo 12/11/2008, 12:48
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: session_unset() vs session_destroy()

y ya intentaste buscar en la documentación oficial ??

http://php.net/session_destroy
http://php.net/session_unset

también no ta haría mal cambiar tu visión acerca de unset

http://php.net/unset

así averiguaras como se comporta cada función, y cual te conviene mas

suerte!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 12/11/2008, 12:54
Avatar de Deschamps  
Fecha de Ingreso: octubre-2008
Mensajes: 257
Antigüedad: 15 años, 6 meses
Puntos: 8
Respuesta: session_unset() vs session_destroy()

Cita:
(..) he visto acerca de la recomendación del uso de session_destroy, pero nada aclaran acerca del contenido de sus parametros (..)
¿Has probado mirando el manual oficial?

Es la referencia que uso yo cuando tengo que consultar la sintaxis de cualquier función, sus parámetros, el tipo o valor que retorna... etc. Incluso vienen ejemplos y aclaraciones, la mayoría de las veces.

Un saludo.

Última edición por Deschamps; 12/11/2008 a las 12:55 Razón: Llego tarde.. como casi siempre :)
  #4 (permalink)  
Antiguo 12/11/2008, 12:57
Avatar de C_Cornell  
Fecha de Ingreso: agosto-2008
Ubicación: Santander
Mensajes: 62
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: session_unset() vs session_destroy()

Si, yo tambien tengo dudas con esa diferenciación.

Según la documentación:

session_destroy() destruye todos los datos asociados con la sesión actual. No destruye ninguna de las variables globales asociadas a la sesión ni la cookie.

Me parece una frase un tanto confusa

Bueno lo que entiendo yo es que:

- session_unset() - Elimina las variables session
- session_destroy - Es el antagonista de session_start, y como tal no se puede trabajar con sesiones si no vuelve a aparecer un session_start por alguna parte

Jaja, pero seguramente este diciendo una burrada
  #5 (permalink)  
Antiguo 12/11/2008, 13:07
Avatar de Deschamps  
Fecha de Ingreso: octubre-2008
Mensajes: 257
Antigüedad: 15 años, 6 meses
Puntos: 8
Respuesta: session_unset() vs session_destroy()

Cita:
Iniciado por C_Cornell Ver Mensaje
pero seguramente este diciendo una burrada
Yo creo que lo has clavao. O por lo menos yo coincido contigo en cuanto a esas funciones. Aunque eso no significa que los dos estemos en lo cierto :))))

Un saludo.
  #6 (permalink)  
Antiguo 14/11/2008, 00:31
 
Fecha de Ingreso: junio-2008
Mensajes: 76
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: session_unset() vs session_destroy()

Yo me he dado de topes, con eso... todos dicen cosas diferentes. Sin embargo, esto es lo que he decidido utilizar.

La única manera que yo sé (mejor dicho, comprendo), es haciendo un print_r($_SESSION) para ver si ya no tengo variables asociativas como $_SESSION['el_ID'].

Código PHP:
    $_SESSION= array();// VACIAMOS LA VARIABLE DE SESION
    
session_unset();// HACEMOS QUE LA VARIABLE YA NO ESTE DEFINIDA
    
session_destroy();// DESTRUIMOS SESION DE SERVIDOR
    
$session_name session_name();// OBTENEMOS NOMBRE DE COOKIE DE SESION
    
if(isset($_COOKIE[$session_name]))// VERIFICAMOS QUE EXISTA LA COOKIE
        
{setcookie(session_name(), ''time()-3600'/');}// ELIMINANDO COOKIE DE VARIABLE DE SESION 
Espero que esto te ayude, saludos.
  #7 (permalink)  
Antiguo 01/12/2008, 16:31
 
Fecha de Ingreso: noviembre-2008
Mensajes: 122
Antigüedad: 15 años, 5 meses
Puntos: 4
Respuesta: session_unset() vs session_destroy()

Ok... GRACIAS !! por vuestras respuestas.. ahondaré mas en el tema, ya que veo q no lo tengo muy claro..es un poco confuso....Igualmente, me sirvieron bastante sus comentarios.
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 07:40.