Ver Mensaje Individual
  #3 (permalink)  
Antiguo 15/07/2010, 07:09
santhy
 
Fecha de Ingreso: febrero-2006
Mensajes: 134
Antigüedad: 18 años, 9 meses
Puntos: 10
Respuesta: Cookies incomibles (no se destruyen)

Los contenidos de $_SERVER son, al igual que $_ENV y al contrario que otras superglobales, de solo lectura, lo que significa que no puedes ir por ahí alegremente modificándolas.

PHP_AUTH_USER y PHP_AUTH_PW son cubiertas por el cliente en presencia de un campo WWW-Authenticate en la cabecera de la petición, al introducir sus credenciales, y el servidor web se las devuelve a tu aplicación.

¡Pero tú no puedes manualmente negar el hecho de que el usuario haya introducido esos datos! Porque eso sería mentir a la lógica ;)

En lugar de ello, si quieres seguir utilizando la autenticación HTTP como tu método de inicio de sesión, para cerrarla debes, además de utilizar cookies si quieres, cambiar la Realm de tu aplicación, invalidando las credenciales del navegador.

De todos modos, debes saber que el modo para que los navegadores que cumplan los estándares cierren tu sesión y se olviden de la cuenta abierta es cerrar la aplicación.

Pero si quieres no depender del usuario, y que vuelva a pedir credenciales, puedes hacer algo como:

Código PHP:

if($accion == 'login') {
  if(!isset(
$_SESSION['realmid'])) $_SESSION['realmid'] = mt_rand(500600);
  
header('WWW-Authenticate: basic realm="Mi aplicación web, tmp:'.$_SESSION['realmid']'"');
}
if(
$accion == 'logout') {
  
$_SESSION['realmid']++;

No sé si entiendes por donde van los tiros en mi código.. ;)
__________________
Si te ha gustado lo que he dicho, puedes darme algún punto de reputación, que no te cuesta nada ^_^.

Di no a los juicios de valor!