Foros del Web » Programando para Internet » PHP »

Destruir cookie y sesion a la vez

Estas en el tema de Destruir cookie y sesion a la vez en el foro de PHP en Foros del Web. Buenas a todos; No lo entiendo por que el código que tengo para destruir cookies y la sesión abierta la mayoría de las veces me ...
  #1 (permalink)  
Antiguo 19/09/2003, 03:25
Avatar de ferent  
Fecha de Ingreso: junio-2002
Ubicación: Madrid
Mensajes: 633
Antigüedad: 15 años, 6 meses
Puntos: 0
Destruir cookie y sesion a la vez

Buenas a todos;

No lo entiendo por que el código que tengo para destruir cookies y la sesión abierta la mayoría de las veces me funciona pero alguna no y no me destrulle las dichosas cookies.

Ahí va ese código:

1º destrullo la sesión (creada con el autentificator de Cluster):

logout_sesion.php
Código PHP:
// Cargamos variables
require ("aut_config.inc.php");
// le damos un nombre a la sesion (por si quisieramos identificarla)
session_name($usuarios_sesion);
// iniciamos sesiones
session_start();
// destruimos la session de usuarios.
session_destroy();
// una  vez destruida la sesión, lo mandamos a la carpeta
// principal para que pueda destruir las cookies, ya que desde aquí no se puede
header ("location: ../logout_cookie.php"); 
2º como comenté las cookies se generan en la página principal mientras que la sesión la destrullo en una subcarpeta.

logout_cookie.php
Código PHP:
//esto no tiene mucha complicación, pero por si acaso se me escapa algo...
<?php
$acceso
=Array(' ',' ');
setcookie("cookie5[user]","$acceso[0]",time()+315360000);
setcookie("cookie5[pass]","$acceso[1]",time()+315360000);
?>
Y eso es to, eso es to, eso es todo amigos

¿Por qué falla?

Gracias!!!
PD: Si necesitan más información dígamenlo, pero es que llevo mucho tiempo con este problema.
__________________
Culto es aquel que sabe donde encontrar lo que no sabe.

Última edición por ferent; 19/09/2003 a las 03:27
  #2 (permalink)  
Antiguo 19/09/2003, 03:32
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

Asi no destruyes la cookie, solo borras su contenido. Para destruir la cookie, especifica una fecha de expiracion en el pasado, para que el navegador la eliminie o invalide. Porque es el navegador el que gestiona las cookies. Simplemente restando en lugar de sumar:
Código PHP:
<?php
$acceso
=Array(' ',' ');
setcookie("cookie5[user]","$acceso[0]",time()-315360000);
setcookie("cookie5[pass]","$acceso[1]",time()-315360000);
?>
Por supuesto, si al crear pusistes mas parametros al setcookie(), debes ponerlos al destruir con los mismo valores que al crear.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 19/09/2003, 03:50
Avatar de ferent  
Fecha de Ingreso: junio-2002
Ubicación: Madrid
Mensajes: 633
Antigüedad: 15 años, 6 meses
Puntos: 0
Hola Josemi;

Ya descubrí el problema (más o menos) pero no la solución. Puse lo que me dijiste, pero ahí no estaba la miga.

Resulta que el dominio en donde está hospedada la web permite poner la url sin "www", por lo que es un problema al crear cookies y borrarlas (supongo), ya que si me identifico sin las "www" la cookie se me guarda en esa dirección; y si me identifico en la de www obviamente sucede lo mismo, lo que da lugar que tenga dos cookies para la misma página.

Lo que no entiendo es por que si borro las cookies CON el "www" no me las borra por que toma la cookie creada SIN las "www" mientras que si lo hago al revés si que las borra y no me coje las otras. VAYA LÍO!!! .

Y mi pregunta es: He visto que en este foro se puede acceder desde "desaweb.forosdelweb.com", desde "www.forosdelweb.com" y desde "forosdelweb.com"; y en las tres me reconoce y en las tres si borro la cookie me la borra también. ¿De qué forma puedo hacer lo mismo?

Muchas gracias
__________________
Culto es aquel que sabe donde encontrar lo que no sabe.
  #4 (permalink)  
Antiguo 19/09/2003, 04:28
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Bueno, creo que no hace mucho conteste algo sobre esto. Creo que en el manual www.php.net/setcookie o en los comentarios de los usuarios comentaban algo de eso. EL "truco" era llamar a setcookie() con todos sus argumentos, y especificar en el domain un valor que sirviese para todos los subdominios (con y sin www, o con otro subdominio). Creo que era poniendo '.dominio.com' o algo asi. Luego lo busco. Pero con esto podrias empezar a buscar (manual, foro, google).

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #5 (permalink)  
Antiguo 19/09/2003, 04:53
Avatar de ferent  
Fecha de Ingreso: junio-2002
Ubicación: Madrid
Mensajes: 633
Antigüedad: 15 años, 6 meses
Puntos: 0
Ya lo vi, joer eres un mostruo, vaya cabeza!!!

la solución está aquí:
<?php
setcookie("SID", "abc", time()+10000, "/", ".foobar.com", 0);
?>

la barra es para atacar a la dirección directamente y no a una subcarpeta del dominio "foobar.com". Lo que no entiendo es para que sirve el "0" del final.

Muchísimas gracias Josemi!!
__________________
Culto es aquel que sabe donde encontrar lo que no sabe.
  #6 (permalink)  
Antiguo 19/09/2003, 06:08
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Pues te lo dice el manual:si es 1 solo se envia la cookie por HTTPS, si es 0 por HTTP y HTTPS. Supongo que si tu sitio va todo por HTTPS, tu cookie tambien deberia.

Saludos.

PD: Podrias poner este problema y solucion en las FAQs. Ya se que quizas no sea tan frecuente, pero puede que sea un caso mas que comun, pero que la gente no se de cuenta.

PD2: ¿Por que no la pongo yo? Pues porque soy un vago
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #7 (permalink)  
Antiguo 19/09/2003, 06:14
Avatar de ferent  
Fecha de Ingreso: junio-2002
Ubicación: Madrid
Mensajes: 633
Antigüedad: 15 años, 6 meses
Puntos: 0
Allá voy, que honor, mi primera faq en PHP )
__________________
Culto es aquel que sabe donde encontrar lo que no sabe.
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 08:09.