Foros del Web » Programando para Internet » PHP »

unset $_SESSION

Estas en el tema de unset $_SESSION en el foro de PHP en Foros del Web. hola amigos tengo el siguiente script @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original <?php                 if ( isset ( ...
  #1 (permalink)  
Antiguo 21/10/2011, 18:50
 
Fecha de Ingreso: julio-2011
Ubicación: mexico
Mensajes: 41
Antigüedad: 13 años, 4 meses
Puntos: 5
unset $_SESSION

hola amigos tengo el siguiente script
Código PHP:
Ver original
  1. <?php
  2.                 if(isset($_SESSION['enviado'])){
  3.                     echo 'Datos enviados';
  4.                     unset($_SESSION['enviado']);
  5.                     session_destroy();
  6.                 }
  7.             ?>

si existe 'enviado' que muestre el mensaje y que inmediatamente destruya la sesion y borre $_SESSION['enviado']

todo bien pero si hago esto
Código PHP:
Ver original
  1. <?php
  2.                 if(isset($_SESSION['enviado'])){
  3.                     echo 'Datos enviados';
  4.                     unset($_SESSION);
  5.                     session_destroy();
  6.                 }
  7.             ?>

no se supone que deberia destruir todos los datos de $_SESSION?

por que eso pensaba yo, pero no lo hace alguien puede decirme por que?

gracias
  #2 (permalink)  
Antiguo 21/10/2011, 18:56
Avatar de humbero12  
Fecha de Ingreso: abril-2009
Ubicación: Cereté, Colombia
Mensajes: 53
Antigüedad: 15 años, 7 meses
Puntos: 4
Respuesta: unset $_SESSION

Recuerda que para destruir una sesion primeros tienes que iniciarla. Porque si no la inicias no sabe php que es lo que vas a destruir. Intenta hacer eso:

Código PHP:
Ver original
  1. <?
  2. session_start(); //Iniciando sesión
  3.  
  4.               if(isset($_SESSION['enviado'])){
  5.                     echo 'Datos enviados';                    
  6.                     session_destroy();
  7.                 }
  8. ?>

Suerte.
__________________
Sigueme en twitter @humbero12
Blog #cazacontenidos
  #3 (permalink)  
Antiguo 21/10/2011, 19:01
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 15 años, 5 meses
Puntos: 641
Respuesta: unset $_SESSION

error de post
  #4 (permalink)  
Antiguo 21/10/2011, 19:05
 
Fecha de Ingreso: julio-2011
Ubicación: mexico
Mensajes: 41
Antigüedad: 13 años, 4 meses
Puntos: 5
Respuesta: unset $_SESSION

Claro y si creo la sesion, de hecho el código me funciona perfecto como esta.

mi pregunta es por que unset($_SESSION)

no borra a $_SESSION['enviado'];

gracias :)
  #5 (permalink)  
Antiguo 21/10/2011, 19:10
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 15 años, 6 meses
Puntos: 322
Respuesta: unset $_SESSION

PHP no miente, así que debes asegurarte del uso de session_start al principio del código sí o sí.

Saludos
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #6 (permalink)  
Antiguo 21/10/2011, 19:21
 
Fecha de Ingreso: julio-2011
Ubicación: mexico
Mensajes: 41
Antigüedad: 13 años, 4 meses
Puntos: 5
Respuesta: unset $_SESSION

¬¬ a ver como les explico este es mi código php completo

Código PHP:
Ver original
  1. <?php
  2.     if(isset($_SESSION['enviado'])){
  3.        echo 'Datos enviados';
  4.        unset($_SESSION['enviado']);
  5.        session_destroy();
  6.    }
  7. ?>

y funciona perfectamente,

el problema no es de la sesion.

me refiero a que si en lugar de

Código PHP:
Ver original
  1. unset($_SESSION['enviado']);

pongo

Código PHP:
Ver original
  1. unset($_SESSION);

no borra el dato de la session, ok gracias de nuevo :)
  #7 (permalink)  
Antiguo 21/10/2011, 19:34
Avatar de humbero12  
Fecha de Ingreso: abril-2009
Ubicación: Cereté, Colombia
Mensajes: 53
Antigüedad: 15 años, 7 meses
Puntos: 4
Respuesta: unset $_SESSION

Intenta con unset($GLOBALS["_SESSION"]); pero aqui borra la variables $_SESSION Y con ella todos items que tenga esa sesión.
__________________
Sigueme en twitter @humbero12
Blog #cazacontenidos
  #8 (permalink)  
Antiguo 21/10/2011, 19:43
Avatar de humbero12  
Fecha de Ingreso: abril-2009
Ubicación: Cereté, Colombia
Mensajes: 53
Antigüedad: 15 años, 7 meses
Puntos: 4
Respuesta: unset $_SESSION

Otra opción para borrar todas las sesiones con el unset

Código PHP:
Ver original
  1. <?php
  2. $arr = array_keys($_SESSION);
  3. foreach($arr as $ind=>$val){
  4.     unset($_SESSION[$val]);
  5. }
  6. ?>
__________________
Sigueme en twitter @humbero12
Blog #cazacontenidos
  #9 (permalink)  
Antiguo 21/10/2011, 19:53
 
Fecha de Ingreso: julio-2011
Ubicación: mexico
Mensajes: 41
Antigüedad: 13 años, 4 meses
Puntos: 5
Respuesta: unset $_SESSION

Ok thanks, aun me quda la duda por que no borra todo el $_SESSION, ¿es por que es un array?
  #10 (permalink)  
Antiguo 21/10/2011, 20:34
 
Fecha de Ingreso: noviembre-2006
Ubicación: Evergreen Street
Mensajes: 239
Antigüedad: 18 años
Puntos: 2
Respuesta: unset $_SESSION

Pues yo pienso que lo correcto es poner el array vacío
Código:
unset($_SESSION['']);
precisamente para dejar sin valores todas las variables de sesión.
  #11 (permalink)  
Antiguo 21/10/2011, 20:36
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 15 años, 6 meses
Puntos: 322
Respuesta: unset $_SESSION

¿Por qué dices que no te borra los datos? Debería funcionar, de hecho lo corrí en mi servidor y funciona perfectamente:

Código PHP:
Ver original
  1. <?php
  2.  
  3. $_SESSION['ejemplo'] = 'Funciona';
  4. unset($_SESSION);
  5. echo $_SESSION['ejemplo']; // Undefined variable _SESSION [...]
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #12 (permalink)  
Antiguo 21/10/2011, 21:14
 
Fecha de Ingreso: julio-2011
Ubicación: mexico
Mensajes: 41
Antigüedad: 13 años, 4 meses
Puntos: 5
Respuesta: unset $_SESSION

por que cuando hago eso, solo el unset($_SESSION)

y me voy a otra página y de esa página regreso a la anterior (sin usar el boton regresar) sigue mostrando 'Datos enviados' no asi cuando borro como me dijeron con GLOBALS y cuando hago

Código PHP:
Ver original
  1. unset($_SESSION['enviado']);

por eso es precisamente que he abierto este tema, por que yo no lo entiendo.
  #13 (permalink)  
Antiguo 21/10/2011, 21:35
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 15 años, 6 meses
Puntos: 322
Respuesta: unset $_SESSION

La verdad nunca tuve un problema similar, así que supongo que tiene que ver con la versión de PHP, por favor que alguien me corrija si estoy mal

Pero bueno, existe una forma mucho más sencilla de lograrlo que estoy seguro que servirá:
Código PHP:
Ver original 

¿Que pasa? Simplemente se declara a la sesión como un array vacío, eliminando todos sus índices

Saludos
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #14 (permalink)  
Antiguo 21/10/2011, 22:48
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 4 meses
Puntos: 793
Respuesta: unset $_SESSION

Según el manual PHP

Cita:
NO destruya completamente $_SESSION con unset($_SESSION) ya que esto deshabilitará el registro de variables de sesión a través del array superglobal $_SESSION.
No es correcto hacer eso. Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP

Etiquetas: session, unset
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 11:23.