Foros del Web » Programando para Internet » PHP »

No me destruye la sesión en Firefox!!

Estas en el tema de No me destruye la sesión en Firefox!! en el foro de PHP en Foros del Web. este navegador me tiene loco, ahora resulta que quiero deslogearme de mi sitio y no pasa nada, con ie6 anda todo bien como de costumbre. ...
  #1 (permalink)  
Antiguo 17/05/2005, 17:23
Avatar de SiR.CARAJ0DIDA  
Fecha de Ingreso: junio-2004
Ubicación: Acá
Mensajes: 1.166
Antigüedad: 13 años, 5 meses
Puntos: 4
No me destruye la sesión en Firefox!!

este navegador me tiene loco, ahora resulta que quiero deslogearme de mi sitio y no pasa nada, con ie6 anda todo bien como de costumbre.

Cuando pongo "cerrar sesion" me manda aca:

Código PHP:

    
if (isset($_SESSION['Nydus_id']))
    {
        unset(
$_SESSION['Nydus_id']);
        unset(
$_SESSION['Nydus_Usuario']);
        if (isset(
$_COOKIE['Nydus_g']))
        {
            
setcookie("Nydus_g"""time()-3600*24"/");
        }

        
header("Location: http://www.torneosnydus.com/index.php");
    } 
y sigo logeado para siempre, incluso si cierro el navegador

esta es la web
http://www.torneosnydus.com

Última edición por SiR.CARAJ0DIDA; 17/05/2005 a las 17:57
  #2 (permalink)  
Antiguo 17/05/2005, 17:26
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 15 años, 4 meses
Puntos: 15
coloca en el logout:
Código PHP:
<?php
session_start
();
session_destroy();
?>
  #3 (permalink)  
Antiguo 17/05/2005, 17:27
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 12 años, 8 meses
Puntos: 2
Hola!

Usa:

session_unset();
session_destroy();
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
  #4 (permalink)  
Antiguo 17/05/2005, 17:59
Avatar de SiR.CARAJ0DIDA  
Fecha de Ingreso: junio-2004
Ubicación: Acá
Mensajes: 1.166
Antigüedad: 13 años, 5 meses
Puntos: 4
perdon me olvide de ponerlo ahi pero sesion_start() esta arriba de todo. ahora, porque tengo que usar session_unset() o session_destroy() ?? no sirve como lo hice?? si en ie6 anda.
  #5 (permalink)  
Antiguo 17/05/2005, 18:16
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 15 años, 4 meses
Puntos: 15
Puedes sar las 2 juntas si quieres, pero la que libera es session_destroy();
  #6 (permalink)  
Antiguo 17/05/2005, 19:02
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 12 años, 8 meses
Puntos: 2
Asi es..

Yo la verdad uso ambas, porque unset lo que hace es liberar todad las variables que existen, es decir, hago algo como:

1. Eliminar todas las variables de session.
2. Matar la session.

Me siento mas seguro, porque no estoy seguro de que session_destroy realmente hace todo ese trabajo.
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
  #7 (permalink)  
Antiguo 17/05/2005, 19:31
Avatar de SiR.CARAJ0DIDA  
Fecha de Ingreso: junio-2004
Ubicación: Acá
Mensajes: 1.166
Antigüedad: 13 años, 5 meses
Puntos: 4
que bien, use session_unset() y luego session_destroy() y sigue el problema, la sesion sigue, nose si la sesion o la cookie..
  #8 (permalink)  
Antiguo 17/05/2005, 19:52
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 12 años, 8 meses
Puntos: 2
Hola!

Si estas validando la entrada en base a la cookies, entonces la cookie es el problema... haz esta prueba

* paginaSalir.php

....
session_unset();
session_destroy();
?>
<a href='paginaMuestraSession.php'>Contirnuar</a>

* paginaMuestraSession.php

echo "[" . $_SESSION['Nydus_id']) . "]";
echo "[" . $_SESSION['Nydus_Usuario']) . "]";

....

Ahi miraras que las variables ya no existen realmente.

Yo creo que tu problema es en otro punto del codigo y no ahi.

Suerte!!
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
  #9 (permalink)  
Antiguo 17/05/2005, 20:02
Avatar de SiR.CARAJ0DIDA  
Fecha de Ingreso: junio-2004
Ubicación: Acá
Mensajes: 1.166
Antigüedad: 13 años, 5 meses
Puntos: 4
elimine la sesion y fui a esta pagina:

echo $_SESSION['Nydus_id'];
echo "<br>".$_SESSION['Nydus_Usuario'];

y no muestra nada, pero tampoco muestra aunque este logeado!!
  #10 (permalink)  
Antiguo 18/05/2005, 11:43
Avatar de SiR.CARAJ0DIDA  
Fecha de Ingreso: junio-2004
Ubicación: Acá
Mensajes: 1.166
Antigüedad: 13 años, 5 meses
Puntos: 4
:s la forma de eliminar la cookie esta bien??
  #11 (permalink)  
Antiguo 18/05/2005, 11:44
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 15 años, 4 meses
Puntos: 15
Como detectas que estas loguiado en esa pagina??
Pon el codigo que usas para determinar que estas loguiado o no lo estas.
  #12 (permalink)  
Antiguo 18/05/2005, 11:56
Avatar de SiR.CARAJ0DIDA  
Fecha de Ingreso: junio-2004
Ubicación: Acá
Mensajes: 1.166
Antigüedad: 13 años, 5 meses
Puntos: 4
ok, al principio de todas las paginas del sitio incluyo este archivo
Código PHP:
    include("conectar.php");
    
             
session_start();

    
$log 0;

    if (isset(
$_COOKIE['Nydus_g']) && isset($_COOKIE['Nydus_g_u']) && !isset($_SESSION['Nydus_id']))
    {
        
$_SESSION['Nydus_Usuario'] = $_COOKIE['Nydus_g_u'];
        
$_SESSION['Nydus_id'] = $_COOKIE['Nydus_g'];
    }

     
// 2 = usuarios

    
if (isset($_SESSION['Nydus_id']) && $_SESSION['Nydus_id'] > 3$log 2;

    
// 1 = admins 

    
if (isset($_SESSION['Nydus_id']) && $_SESSION['Nydus_id'] >= && $_SESSION['Nydus_id'] <= 3$log 1
y el logout:
Código PHP:

    session_start
();

    if (isset(
$_SESSION['Nydus_id']))
    {
        unset(
$_SESSION['Nydus_id']);
        unset(
$_SESSION['Nydus_Usuario']);
        
session_unset();
        
session_destroy();
        if (isset(
$_COOKIE['Nydus_g']))
        {
            
setcookie("Nydus_g"""time()-3600*24"/");
            
setcookie("Nydus_g_u",""time()-3600*24"/");
        }

        
header("Location: http://www.torneosnydus.com/index.php");
    } 
  #13 (permalink)  
Antiguo 18/05/2005, 12:01
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 15 años, 4 meses
Puntos: 15
Bueno el archivo que incluye llama a las cookies y si esta existe y tiene valor asigna la session, este sistema tuyo es con cookie no con session, a la hora del logout debes destruir las cookies tambien.

if (isset($_COOKIE['Nydus_g']) && isset($_COOKIE['Nydus_g_u']) && !isset($_SESSION['Nydus_id']))

elimina $_COOKIE['Nydus_g']
elimina $_COOKIE['Nydus_g_u']

haslo con unset() y las eliminas asi:
unset($_COOKIE['Nydus_g']);

todo eso a la hora de llamar el session_destroy();
  #14 (permalink)  
Antiguo 18/05/2005, 12:19
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 12 años, 8 meses
Puntos: 2
Para salir.

Código PHP:

session_start
(); 
session_unset(); 
session_destroy(); 
setcookie("Nydus_g"""); 
setcookie("Nydus_g_u",""); 

?>

Tu session ha sido cerrada. Gracias. 
No estoy muy seguro, pero usar el header puede ser problema en ese punto, mejor que haces todo normal y el que haga el click a donde quiera ir, primero intentalo asi, y despues ves la forma del redirect..

Para login... bien, te voy a pregutnar algo, PARA Y PORQUE NECESITAS verificar dos cosas que al final de cuentas es lo mismo ????

Para login, porque no usas solamente session?, session se basa en cookies, entonces si session falla cookies tambien lo hara, te recomiendo cambiar a usar solamente session para el sistema de login:

Código PHP:

include("conectar.php"); 
session_start(); 

$log 0

//Verificar un usuario y password en una base de datos.

if verificacion(x,y)
{
    
$_SESSION['Nydus_Usuario'] = $usuario
    
$_SESSION['Nydus_id'] = $usuarioID

No es logico lo que haces, porque quieres un login basado en una cookie, y de hecho el el logout limpiaste la cookie, pero aun existe como vacia, entocnes tu sistema de login IsSet($_COOKIE) es verdadero, porque si existe aunque esta vacia, entonces el login es correcto, y no te imprime nada, porque en efecto tienes una cadena vacia.

Espero haberme explicado. Suerte!!
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
  #15 (permalink)  
Antiguo 18/05/2005, 12:43
Avatar de SiR.CARAJ0DIDA  
Fecha de Ingreso: junio-2004
Ubicación: Acá
Mensajes: 1.166
Antigüedad: 13 años, 5 meses
Puntos: 4
no entiendo.. como es que la cookie esta vacia si le asigne un tiempo de expiracion negativo, hay otra forma de eliminar una cookie?

y porque no puedo usar cookies? entonces como hago para recordar al usuario?
  #16 (permalink)  
Antiguo 18/05/2005, 12:54
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 12 años, 8 meses
Puntos: 2
Humm...

La verdad no se, no se como destruir una cookie definitivamente, lo que hago siempre es ponerlas vacias.

Ademas si no me equivoco es probable que el poner tiempo negativo no funcion, tamoco creo que unset($_COOKIE) funcione, porque es una variable local en ese momento del script, porque ese arreglo se forma de cookies que recoges del cliente, por lo tanto no creo que funcione.

Pero tu problema no esta solamente en como borrar una cookie, sino en tu sistema de login como te mencione arriba, bueno quizas sea que no entiendo bien lo que quieres hacer, pero a simple vista parece que esta mal.

Suerte!!
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
  #17 (permalink)  
Antiguo 18/05/2005, 13:06
Avatar de SiR.CARAJ0DIDA  
Fecha de Ingreso: junio-2004
Ubicación: Acá
Mensajes: 1.166
Antigüedad: 13 años, 5 meses
Puntos: 4
bueno nose donde decis que hay un error, pero explico como funciona, me parece que es logico:

1) alguien entra a la pagina, comprueba si no existe la sesion pero existen las cookies, si existen las cookies inicia sesion, si no existen las cookies no esta logeado.
2) el usuario esta logeado y desea cerrar sesion, lo mando a logout.php donde comprueba si existe la sesion, si existe la elimina, si existen las cookies tambien las elimina y vuelve al index.php

hay algo mal en esto?
  #18 (permalink)  
Antiguo 18/05/2005, 13:25
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 12 años, 8 meses
Puntos: 2
Ok.

Bueno, entonces si todo esta bien con tu login, haz este cambio:

Código PHP:

include("conectar.php"); 
session_start(); 
$log 0

if (isset(
$_COOKIE['Nydus_g']) && isset($_COOKIE['Nydus_g_u']) && !isset($_SESSION['Nydus_id']))

  if (
$_COOKIE['Nydus_g'] > "" && $_COOKIE['Nydus_g_u']) > "")
  {
     
$_SESSION['Nydus_Usuario'] = $_COOKIE['Nydus_g_u']; 
     
$_SESSION['Nydus_id'] = $_COOKIE['Nydus_g']; 
  }
  else
  {
     
//No esta logueado
  
}



// 2 = usuarios 
if (isset($_SESSION['Nydus_id']) && $_SESSION['Nydus_id'] > 3$log 2

// 1 = admins 
if (isset($_SESSION['Nydus_id']) && $_SESSION['Nydus_id'] >= && $_SESSION['Nydus_id'] <= 3$log 1
Aun no me convence mucho tu metodo, pero creo que con ese detallito que cambie te va a a trabajar bien.

Suerte!!
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
  #19 (permalink)  
Antiguo 18/05/2005, 15:40
Avatar de SiR.CARAJ0DIDA  
Fecha de Ingreso: junio-2004
Ubicación: Acá
Mensajes: 1.166
Antigüedad: 13 años, 5 meses
Puntos: 4
no hay caso, compruebo si las cookies son nulas pero parece que no se quieren borrar..
  #20 (permalink)  
Antiguo 18/05/2005, 16:30
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 12 años, 8 meses
Puntos: 2
Lo probaste ?

Probaste lo que te mande ?

Para Log-Out

Código PHP:

session_start
(); 
session_unset(); 
session_destroy(); 
setcookie("Nydus_g"""); 
setcookie("Nydus_g_u",""); 

?> 

Tu session ha sido cerrada. Gracias. 
Para Login

Código PHP:

include("conectar.php"); 
session_start(); 
$log 0

if (isset(
$_COOKIE['Nydus_g']) && isset($_COOKIE['Nydus_g_u']) && !isset($_SESSION['Nydus_id'])) 

  if (
$_COOKIE['Nydus_g'] > "" && $_COOKIE['Nydus_g_u']) > ""
  { 
     
$_SESSION['Nydus_Usuario'] = $_COOKIE['Nydus_g_u']; 
     
$_SESSION['Nydus_id'] = $_COOKIE['Nydus_g']; 
  } 
  else 
  { 
     
//No esta logueado 
  




// 2 = usuarios 
if (isset($_SESSION['Nydus_id']) && $_SESSION['Nydus_id'] > 3$log 2

// 1 = admins 
if (isset($_SESSION['Nydus_id']) && $_SESSION['Nydus_id'] >= && $_SESSION['Nydus_id'] <= 3$log 1
Asi creo que funcionaria bien, intentalo y luego dices si por lo menos ya te funciona bien.

Un saludo!!
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
  #21 (permalink)  
Antiguo 18/05/2005, 16:45
Avatar de SiR.CARAJ0DIDA  
Fecha de Ingreso: junio-2004
Ubicación: Acá
Mensajes: 1.166
Antigüedad: 13 años, 5 meses
Puntos: 4
hice esto y no anda

Código PHP:
    session_start();

    if (isset(
$_SESSION['Nydus_id']))
    {
        
session_unset();
        
session_destroy();
        if (isset(
$_COOKIE['Nydus_g']) && isset($_COOKIE['Nydus_g_u']) )
        {
            
setcookie("Nydus_g"0time()-3600*24"/");
            
setcookie("Nydus_g_u",""time()-3600*24"/");
        }

        
header("Location: http://www.torneosnydus.com/index.php");
    } 
Código PHP:
    session_start();

    
$log 0;

    if (isset(
$_COOKIE['Nydus_g']) && isset($_COOKIE['Nydus_g_u']) && $_COOKIE['Nydus_g'] > && $_COOKIE['Nydus_g_u'] != NULL && !isset($_SESSION['Nydus_id']))
    {
        
$_SESSION['Nydus_Usuario'] = $_COOKIE['Nydus_g_u'];
        
$_SESSION['Nydus_id'] = $_COOKIE['Nydus_g'];
    }

     
// 2 = usuarios

    
if (isset($_SESSION['Nydus_id']) && $_SESSION['Nydus_id'] > 3$log 2;

    
// 1 = admins - cara, redis, gon

    
if (isset($_SESSION['Nydus_id']) && $_SESSION['Nydus_id'] >= && $_SESSION['Nydus_id'] <= 3$log 1
  #22 (permalink)  
Antiguo 18/05/2005, 16:48
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 12 años, 8 meses
Puntos: 2
Hola!

Aun tiene errores eso, pero mira, intenta tal como te lo puse y dime que pasa, tengo confianza en que funcionara, solo revisa si se me escapa algun error de sintaxis...

Suerte!!
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
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 11:01.