Foros del Web » Programando para Internet » PHP »

Problema con terminar sesiones

Estas en el tema de Problema con terminar sesiones en el foro de PHP en Foros del Web. Hola, quisiera que me aconsejarais como cerrar una sesion de forma segura. La sesion la creo de la siguiente forma: Código PHP: # iniciamos la sesión session_start (); ...
  #1 (permalink)  
Antiguo 24/07/2003, 15:05
MMU
Invitado
 
Mensajes: n/a
Puntos:
Problema con terminar sesiones

Hola, quisiera que me aconsejarais como cerrar una sesion de forma segura.

La sesion la creo de la siguiente forma:

Código PHP:
# iniciamos la sesión
session_start();

# registramos una variable de sesión asignandole un nombre
session_register('snick');

#asignamos un valor a esa variable de sesión
$snick=$nick;

# registramos una nueva variable de sesión 
session_register('spass');

#asignamos un valor a esa nueva variable de sesión
$spass=$password;

#recogemos las variables de sesión y sus valores en una cadena
$codifica=session_encode(); 
Un saludo
  #2 (permalink)  
Antiguo 24/07/2003, 15:50
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 15 años, 10 meses
Puntos: 5
Pues creo que antes que nada debes cambiar la forma en la que creas la sesion, ya que session_register debe ser llamado DESPUES de haberle asignado el valor a dicha variable...

1.- $snick=$nick;
2.- session_register('snick');

Luego, para terminar la sesion, haces esto:

session_unset();
session_destroy();
header("Location: otrapagina.php");
exit();

es conveniente que otrapagina.php no tenga acceso a las variables de sesión.

Yo, personalmente, tengo en otrapagina.php un javascript que hace un refresh hacia mi index.php despues de un par de segundos, e includo pongo ahí un letrero que dice "espere mientras se cierra su sesión, en un momento será redirigido"

Bueno, mi muy humilde punto de vista...

Salud!!!
__________________
Manoloweb
  #3 (permalink)  
Antiguo 24/07/2003, 17:59
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 15 años, 4 meses
Puntos: 15
Saludos,

De manera correcta se debe primero declarar session_register('variable');

Luego le das valor a esa variable, y la forma de cerrar es como te dice manoloweb, aunque no es necesario que redirijas a otra pagina ya que sesion que termines estara muerta.

Cualquier otra duda no dudes en consultar!!!!

Última edición por dwaks; 24/07/2003 a las 18:01
  #4 (permalink)  
Antiguo 24/07/2003, 20:51
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 15 años, 10 meses
Puntos: 5
Para referencia, te paso el ejemplo directamente desde el manual de PHP...

$barney = "A big purple dinosaur.";
session_register("barney");

Aqui pongo tambien la descripción en ingles...

======================================
session_register() accepts a variable number of arguments, any of which can be either a string holding the name of a variable or an array consisting of variable names or other arrays. For each name, session_register() registers the global variable with that name in the current session.
======================================

Estoy marcando en bold la parte que dice:

Para cada nombre, session_register() registra la variable glogal con ese nombre en la session actual.

Es probable que tambien funcione de la otra manera (no lo he probado), pero la correcta es esta
__________________
Manoloweb
  #5 (permalink)  
Antiguo 25/07/2003, 04:07
MMU
Invitado
 
Mensajes: n/a
Puntos:
Muchas gracias a los dos!
  #6 (permalink)  
Antiguo 25/07/2003, 05:49
MMU
Invitado
 
Mensajes: n/a
Puntos:
Bueno, he realizado el cambio de orden que recomendaba manoloweb, y he añadido el archivo logout.php con el codigo que comentabas, pero al ajecutarlo en el servidor me devuelve este error:

Warning: session_destroy() [function.session-destroy]: Trying to destroy uninitialized session in /home/public_html/logout.php on line 3

Warning: Cannot modify header information - headers already sent by (output started at /home/public_html/logout.php:3) in /home/public_html/logout.php on line 4

El archivo logout.php es:

Código PHP:
<?
session_unset
();
session_destroy();
header("Location: confirmacion.php");
exit();
?>
Gracias por anticipado
  #7 (permalink)  
Antiguo 25/07/2003, 09:08
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 15 años, 10 meses
Puntos: 5
<?
session_start()
session_unset();
session_destroy();
header("Location: confirmacion.php");
exit();
?>
__________________
Manoloweb
  #8 (permalink)  
Antiguo 25/07/2003, 10:13
MMU
Invitado
 
Mensajes: n/a
Puntos:
Muchas gracias manoloweb! eres el mejor!!
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:14.