Foros del Web » Programando para Internet » PHP »

No me cierra la sesion

Estas en el tema de No me cierra la sesion en el foro de PHP en Foros del Web. Hola a todos, tengo un problemilla con el uso de sesiones, aunque he visto varios temas en el foro con dudas similares no he conseguido ...
  #1 (permalink)  
Antiguo 29/07/2005, 09:59
Avatar de ibme74  
Fecha de Ingreso: marzo-2004
Mensajes: 81
Antigüedad: 20 años, 1 mes
Puntos: 0
No me cierra la sesion

Hola a todos,
tengo un problemilla con el uso de sesiones,
aunque he visto varios temas en el foro con dudas similares
no he conseguido una solucion.
el problema es que no me cierra la sesion
el codigo que utilizo es:

Código PHP:
<?  require ("conexion.php");
session_start();

 
//aqui varias querys y consultas de datos de bd y de session

 // al final cierro la conexion
mysql_close();

// Finalmente, destruye la sesion
session_destroy();
?>
pero no la destruye sigue abierta

¿cuál puede ser el problema? ¿alguna pista?
  #2 (permalink)  
Antiguo 29/07/2005, 10:02
 
Fecha de Ingreso: abril-2004
Mensajes: 260
Antigüedad: 20 años
Puntos: 1
agregale el session_unset();
Probalo.
De todas maneras en mi experiencia con PHP y Sessiones he obtenido muchos dolores de cabeza.
__________________
:serio: :adios:
  #3 (permalink)  
Antiguo 29/07/2005, 10:12
Avatar de ibme74  
Fecha de Ingreso: marzo-2004
Mensajes: 81
Antigüedad: 20 años, 1 mes
Puntos: 0
Gracias por responder emiliano, pero sigue sin funcionar.

he leido algo de la configuracion de php, es esta

Directive Local Value Master Value
session.auto_start Off Off
session.bug_compat_42 Off Off
session.bug_compat_warn On On
session.cache_expire 180 180
session.cache_limiter nocache nocache
session.cookie_domain no value no value
session.cookie_lifetime 0 0
session.cookie_path / /
session.cookie_secure Off Off
session.entropy_file no value no value
session.entropy_length 0 0
session.gc_divisor 100 100
session.gc_maxlifetime 1440 1440
session.gc_probability 1 1
session.name PHPSESSID PHPSESSID
session.referer_check no value no value
session.save_handler files files
session.save_path /tmp /tmp
session.serialize_handler php php
session.use_cookies On On
session.use_only_cookies Off Off
session.use_trans_sid Off Off
  #4 (permalink)  
Antiguo 29/07/2005, 10:15
 
Fecha de Ingreso: abril-2004
Mensajes: 260
Antigüedad: 20 años
Puntos: 1
Te tira algún error o simplemente no lo hace?.
__________________
:serio: :adios:
  #5 (permalink)  
Antiguo 29/07/2005, 10:18
Avatar de ibme74  
Fecha de Ingreso: marzo-2004
Mensajes: 81
Antigüedad: 20 años, 1 mes
Puntos: 0
simplemente no lo hace
  #6 (permalink)  
Antiguo 29/07/2005, 10:20
 
Fecha de Ingreso: abril-2004
Mensajes: 260
Antigüedad: 20 años
Puntos: 1
Luego de destruir la session haces un echo de la variable y te muestra su valor??.
Me quedé en aguas entonces.
__________________
:serio: :adios:
  #7 (permalink)  
Antiguo 29/07/2005, 10:45
Avatar de ibme74  
Fecha de Ingreso: marzo-2004
Mensajes: 81
Antigüedad: 20 años, 1 mes
Puntos: 0
despues de session_destroy ya no me muestra la variable.

Lo que hago exactamente es esto:
es un carrito de la compra.
cuando el cliente selecciona un producto lo manda a una pagina que:
1ª crea una sesion y guarda la variable pedido con el session_id.

Código PHP:
session_start();
$num=session_id();
$_SESSION['pedido'] = "$num";
require (
"conexion.php");
$query="INSERT INTO carrito (pedido,nombre,pvp,talla,cantidad) VALUES  ($pedido, etc............. (' 
2º Muestra lo que ha insertado
Código PHP:

require ("conexion.php");
                            
$query="SELECT * FROM carrito WHERE pedido='$pedido'";
                             
$result=mysql_db_query($dbdat,$query,$link);
                       while (
$row mysql_fetch_array($result)) etc..... 
3º muestra un formulario html para insertar los datos que lo manda a otra pagina php donde inserto los datos en una bd y cierro la sesion.

Pero si despues de esto, que se supone que que la sesion ya no existe vuelvo
al carrito de la compra y añado un producto me lo añade a la anterior es decir
que el session_id es el mismo.
  #8 (permalink)  
Antiguo 29/07/2005, 10:48
 
Fecha de Ingreso: abril-2004
Mensajes: 260
Antigüedad: 20 años
Puntos: 1
Mmmm, no se que onda... ALGUIEN TIRE UN SOGA!!!
__________________
:serio: :adios:
  #9 (permalink)  
Antiguo 29/07/2005, 12:57
Avatar de ibme74  
Fecha de Ingreso: marzo-2004
Mensajes: 81
Antigüedad: 20 años, 1 mes
Puntos: 0
creo que el problema es que la primera vez que añades un producto crea la sesion pero no registra el session_id
  #10 (permalink)  
Antiguo 29/07/2005, 14:50
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
Iniciando la session de la misma manera que cuando la creas, y agregando:
session_unset();
session_destroy();
Deberia destruirte todas las sessiones creadas con esa instancia.

Eje, pagina1.php
Código PHP:
<?php 
session_name
('tuSession');
session_cache_expire(15);
session_start();
$_SESSION["hola"] = "hola Mundo";
echo 
$_SESSION["hola"];
?>
pagina2.php:
Código PHP:
<?php 
session_name
('tuSession');
session_cache_expire(15);
session_start();
echo 
$_SESSION["hola"]. "<hr>"#Aca te lo imprimira
session_unset();
session_destroy();
echo 
$_SESSION["hola"]; #Pero aca no
?>
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #11 (permalink)  
Antiguo 29/07/2005, 23:19
Avatar de ibme74  
Fecha de Ingreso: marzo-2004
Mensajes: 81
Antigüedad: 20 años, 1 mes
Puntos: 0
solucionado

Gracias Nicolaspar.

Ya encontre el problema, no es que no cerrara la sesion si la cierra.

El problema es que pensé que el session_id() es diferente para cada sesion
y eso no es del todo cierto porque al abrir una sesion comprueba si hay una cookie con el session_id y si existe toma este valor por lo que aunque cerrara la sesion al abrir otra tomaba el mismo id.

La solucion la dio Cluster (gracias otra vez Cluster) en un tema anterior:

Si quires borrar la cookie creada por PHP si usas session.use_cookies = 1 .. te vendría mejor usar:

setcookie( session_name() ,"",0,"/");

donde session_name() es el nombre de tu sesión actual


Ahora todo funciona bien.
Gracias a todos y hasta la próxima.
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 23:59.