Foros del Web » Programando para Internet » PHP »

problemas con logout

Estas en el tema de problemas con logout en el foro de PHP en Foros del Web. hola, sé que este es un tema muy tratado, pero no consigo que me funcione. Lo estoy intentando borrando las variables (he visto por ahí ...
  #1 (permalink)  
Antiguo 13/01/2010, 03:42
 
Fecha de Ingreso: marzo-2009
Mensajes: 509
Antigüedad: 15 años
Puntos: 17
Busqueda problemas con logout

hola, sé que este es un tema muy tratado, pero no consigo que me funcione. Lo estoy intentando borrando las variables (he visto por ahí que se supone que funciona, pero nada).

Lo que más raro me parece es que aparentemente están borradas pero luego reaparecen:

Autentificación:
Código:
	while (!isset($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_USER'])){
		Header("WWW-Authenticate: Basic realm=\"Autentificación\"");
		Header("HTTP/1.0 401 Unauthorized");
		exit;
	}
Al final de la página pongo:
Código:
        unset($_SERVER['PHP_AUTH_USER']);
	unset($_SERVER['PHP_AUTH_PW']);
	echo "usuario: ".$_SERVER['PHP_AUTH_USER']."contraseña: ".$_SERVER['PHP_AUTH_PW']
el echo sale como que las variables están vacias, pero al volver a entrar las tiene salvadas (la misma linea de echo justo arriba me saca las guardadas)

Otra cosa que he probado es:

Código:
	unset($_SERVER['PHP_AUTH_USER']);
	unset($_SERVER['PHP_AUTH_PW']);
	while (!isset($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_USER'])){
		Header("WWW-Authenticate: Basic realm=\"Autentificación SSH\"");
		Header("HTTP/1.0 401 Unauthorized");
		exit;
	}
Entonces me sale siempre la ventana de autentificación.

¿Alguien me puede echar una mano?

Gracias. Saludos
  #2 (permalink)  
Antiguo 13/01/2010, 09:06
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: problemas con logout

Hola cucuru,

Si revisas otros POSTs esas variables PHP_AUTH_USER y PHP_AUTH_PW las envía el navegador cuando haces una autentificación HTTP por lo que NO pueden ser borradas, por eso en cada request vuelven a estar las variables aunque les hagas unset.

Saludos.
  #3 (permalink)  
Antiguo 13/01/2010, 09:20
Avatar de FNX_NET  
Fecha de Ingreso: marzo-2004
Ubicación: EN EL INFIERNO.....
Mensajes: 1.707
Antigüedad: 20 años
Puntos: 7
Respuesta: problemas con logout

pero no entiende que quere hacer

lo mejor para un logout es un $_SESSION = NULL;

aparte del destroy
__________________
:-D "Que se libere del cielo confinado; que mi cuerpo sea la espada de hielo negro que nos lleve al abismo; que ningún poder pueda detenernos...Destructora de las almas de los dioses!!!":adios:


:pirata:
  #4 (permalink)  
Antiguo 14/01/2010, 01:44
 
Fecha de Ingreso: marzo-2009
Mensajes: 509
Antigüedad: 15 años
Puntos: 17
Respuesta: problemas con logout

Gracias por las respuestas, podríais orientarme un poquito más con lo de $_SESSION = NULL?

¿debería hacer un logout.php o en el mismo archivo valdría? Por más que lo intento nada...

Gracias.

Saludos
  #5 (permalink)  
Antiguo 14/01/2010, 09:57
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: problemas con logout

Para usar $_SESSION tienes que estar usando sesiones antes, en tu caso no sirve de nada ya que como te comento las variables que traes en $_SERVER las define el navegador y no las puedes "unsetear" desde PHP.

Saludos.
  #6 (permalink)  
Antiguo 14/01/2010, 11:19
 
Fecha de Ingreso: octubre-2009
Ubicación: Merida Yucatan
Mensajes: 93
Antigüedad: 14 años, 5 meses
Puntos: 2
Respuesta: problemas con logout

Pienso que deberias usar variables de sesión $_SESSION[]; Para destruirlas solo necesitas un session_destroy();

Nunca he manejado esas que comentas
  #7 (permalink)  
Antiguo 15/01/2010, 02:38
 
Fecha de Ingreso: marzo-2009
Mensajes: 509
Antigüedad: 15 años
Puntos: 17
Respuesta: problemas con logout

Hola, con he estado probando con sesiones y me ha funcionado a "medias" el logout va perfecto, el problema lo tengo la primera vez que ingreso, es decir, cierro el navegador y vuelvo a abrirlo.

estas son mis dos versiones, que las dos hacen lo mismo y soy incapaz de ver porque:

Versión 1:
Código PHP:
if (!isset($_SESSION['usuario'], $_SESSION['contrasena'])){     
        
Header("WWW-Authenticate: Basic realm=\"Identificación\"");
        
Header("HTTP/1.1 401 Unauthorized");
        
$_SESSION['usuario'] = $_SERVER['PHP_AUTH_USER'];
        
$_SESSION['contrasena'] = $_SERVER['PHP_AUTH_PW'];    
        echo 
"Se requiere autentificación";        
        exit;        
    } 
Versión 2:
Código PHP:
    if (!isset($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW'])){     
        
Header("WWW-Authenticate: Basic realm=\"Identificación\"");
        
Header("HTTP/1.1 401 Unauthorized");
        
$_SESSION['usuario'] = $_SERVER['PHP_AUTH_USER'];
        
$_SESSION['contrasena'] = $_SERVER['PHP_AUTH_PW'];    
        echo 
"Se requiere autentificación";        
        exit;        
    }else if (!isset(
$_SESSION['usuario'], $_SESSION['contrasena'])){     
        
Header("WWW-Authenticate: Basic realm=\"Identificación\"");
        
Header("HTTP/1.1 401 Unauthorized");
        
$_SESSION['usuario'] = $_SERVER['PHP_AUTH_USER'];
        
$_SESSION['contrasena'] = $_SERVER['PHP_AUTH_PW'];    
        echo 
"Se requiere autentificación";        
        exit;        
    } 
Muchas gracias. Saludos

Etiquetas: logout
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 17:35.