Foros del Web » Programando para Internet » PHP »

Cerrar sesion

Estas en el tema de Cerrar sesion en el foro de PHP en Foros del Web. Hola, a ver si alguien me puede resolver esta duda. Inicializo sesion con HTTP y guardo usuario y contraseña en $_SESSION['User'] y $_SESSION['Pass']. En la ...
  #1 (permalink)  
Antiguo 26/12/2009, 04:00
 
Fecha de Ingreso: junio-2009
Mensajes: 45
Antigüedad: 14 años, 10 meses
Puntos: 0
Cerrar sesion

Hola, a ver si alguien me puede resolver esta duda.

Inicializo sesion con HTTP y guardo usuario y contraseña en $_SESSION['User'] y $_SESSION['Pass'].

En la siguiente página, tengo desconectar.php y contiene lo siguiente:

<?php
session_start();
unset($_SESSION['User']);
session_destroy();
echo "<script type='text/javascript'>location.href='index.php';</script>";
?>

Porque cuando vuelvo a darle a iniciar sesión ya no me pide usuario ni contraseña sino que sigue entrando con el mismo??

Un saludo y muchas gracias.
  #2 (permalink)  
Antiguo 26/12/2009, 07:00
Avatar de McBlink  
Fecha de Ingreso: noviembre-2006
Ubicación: $ARG->LaPampa()
Mensajes: 1.694
Antigüedad: 17 años, 5 meses
Puntos: 23
Respuesta: Cerrar sesion

probá asi:

Código PHP:
// tu coneccion.
session_start();
session_destroy();
Header("Location: index.php"); 

Saludos.
  #3 (permalink)  
Antiguo 26/12/2009, 08:54
Avatar de jackson666  
Fecha de Ingreso: noviembre-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 1.971
Antigüedad: 14 años, 5 meses
Puntos: 65
Respuesta: Cerrar sesion

Cita:
Iniciado por McBlink Ver Mensaje
probá asi:

Código PHP:
// tu coneccion.
session_start();
session_destroy();
Header("Location: index.php"); 

Saludos.
Eh?? Que "coneccion"?? Si antes de session_start() no puede haber nada! Ademas no tiene un problema de redireccion!! ::

Que quiere decir "Inicializo sesion con HTTP"???

Ademas, para que guardas la clave en una variable de sesion????
__________________
HV Studio
Diseño y desarrollo web
  #4 (permalink)  
Antiguo 26/12/2009, 10:27
Avatar de McBlink  
Fecha de Ingreso: noviembre-2006
Ubicación: $ARG->LaPampa()
Mensajes: 1.694
Antigüedad: 17 años, 5 meses
Puntos: 23
Respuesta: Cerrar sesion

porque cuando incluyo la coneccion en mi caso, la primera linea es

Código PHP:
session_start(); 
:-p
  #5 (permalink)  
Antiguo 26/12/2009, 10:32
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Cerrar sesion

juanxml ¿dices que usas autenticación HTTP?

bueno, muchas veces es necesario iniciar con credenciales falsas para borrar la sesión previa, ya que esos datos los almacena el navegador...

y aunque borres la sesión de PHP el navegador va a seguir usando los últimos datos proporcionados...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 26/12/2009, 11:10
 
Fecha de Ingreso: junio-2009
Mensajes: 45
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Cerrar sesion

Cita:
Iniciado por pateketrueke Ver Mensaje
juanxml ¿dices que usas autenticación HTTP?

bueno, muchas veces es necesario iniciar con credenciales falsas para borrar la sesión previa, ya que esos datos los almacena el navegador...

y aunque borres la sesión de PHP el navegador va a seguir usando los últimos datos proporcionados...
Exactamente eso es lo que me paso. Uso autenticación HTTP, guardo el nombre de usuario y contraseña en $_SESSION['User'] y $_SESSION['Pass'] y las comparo, si están bien se accede al contenido.

Yo lo que quiero es que cuando se le de a desconexión, a parte de volver a la primera página (que eso sí lo hace bien), me borre el contenido de las variables, para que cuando vuelva a entrar otra vez me pida usuario y contraseña, no las tenga ya guardadas.

gracias ;)
  #7 (permalink)  
Antiguo 26/12/2009, 11:57
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Cerrar sesion

te sugiero leer lo siguiente:

http://php.net/manual/en/features.http-auth.php
http://www.jonasjohn.de/snippets/php...ith-logout.htm
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #8 (permalink)  
Antiguo 27/12/2009, 09:30
 
Fecha de Ingreso: junio-2009
Mensajes: 45
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Cerrar sesion

Gracias por los enlaces, pero no entiendo que hay que hacer para borrar las variables, o los cookies o lo que sea, para que al volver al menú y pulsar de nuevo en el enlace me pida otra vez usuario y contraseña, es decir, "se desconecte", no que haga lo que haga siempre a partir de la primera identificación entra sin problemas a no ser que yo borre los cookies manualmente.
  #9 (permalink)  
Antiguo 27/12/2009, 17:00
Avatar de McBlink  
Fecha de Ingreso: noviembre-2006
Ubicación: $ARG->LaPampa()
Mensajes: 1.694
Antigüedad: 17 años, 5 meses
Puntos: 23
Respuesta: Cerrar sesion

pero estás usando sessiones o cookies?
  #10 (permalink)  
Antiguo 27/12/2009, 17:04
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 14 años, 9 meses
Puntos: 150
Respuesta: Cerrar sesion

Estaria bien que pusieras el codigo de donde creas dichas variables de sesion o cookies cuando un usuario se identifica
  #11 (permalink)  
Antiguo 28/12/2009, 13:23
 
Fecha de Ingreso: junio-2009
Mensajes: 45
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Cerrar sesion

Pongo el código para que quede más claro:

login.php

<?php

function showLogin() {

header('WWW-Authenticate: Basic realm="Introduzca sus datos"');

header('HTTP/1.0 401 Unauthorized');

echo "Usted no tiene permisos para ingresar.\n";

exit;

}

$_SESSION['User'] = $_SERVER['PHP_AUTH_USER'];

$_SESSION['Pass'] = $_SERVER['PHP_AUTH_PW'];

if (!isset($_SESSION['User'])) {

showLogin();

} else {

if ($_SESSION['User'] == "root" && $_SESSION['Pass'] == "xxxxxx") {

header("Location: pagina.php/");

} else {

showLogin();

}

}

?>

-------------------------------

cerrarsesion.php

<?php

session_start();
unset($_SESSION['User']);

session_destroy();

echo "<script type='text/javascript'>location.href='../index.php';</script>";
?>

------------------------------------------

He probado varias cosas para "eliminar" la sesión, pero nada, que cada vez que vuelvo a entrar sin cerrar el navegador, se salta la autenticación de usuario y entra directamente. Sólo cuando borro manualmente los datos del navegador, me vuelve a pedir usuario y contraseña.
  #12 (permalink)  
Antiguo 28/12/2009, 14:03
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Cerrar sesion

Cita:
Iniciado por juanxml Ver Mensaje
[...] He probado varias cosas para "eliminar" la sesión, pero nada, que cada vez que vuelvo a entrar sin cerrar el navegador, se salta la autenticación de usuario y entra directamente. Sólo cuando borro manualmente los datos del navegador, me vuelve a pedir usuario y contraseña [...]
a mi me ha quedado muy claro desde el comienzo, creo que a ti no.... (y creo que te lo comente desde el principio)

por favor, lee estos enlaces... yo mismo he usado autenticación HTTP antes...

y es necesario hacer un login falso para borrar la información almacenada, no creas que todo lo que hago es por molestar...

si te hubieras tomado la molestia de leer con atención, bien... es tu problema, suerte!!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #13 (permalink)  
Antiguo 28/12/2009, 14:20
 
Fecha de Ingreso: septiembre-2009
Mensajes: 124
Antigüedad: 14 años, 7 meses
Puntos: 3
Respuesta: Cerrar sesion

Es sencillo, para eliminar una sesión activa (no cookies) lo podés hacer de esta forma:

Código PHP:

session_start
();

session_unset();

session_destroy(); 
Para eliminar una sesión de una cookie tendrías que hacer lo siguiente:

Cuando seteas la cookie, la seteas con un nombre, valor, "tiempo de vida" y directorio. Para elimnarla tenés que resetearla con el mismo nombre, valor y directorio. Lo único que cambia es el "tiempo de vida".

Un ejemplo que use en un sistema que hice es:

Código PHP:

setcookie
('usuario',$_COOKIE['usuario'],time()-3600*9,'/sistemaweb'); 
Espero que te sirva.

Saludos!!
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 14:36.