Foros del Web » Programando para Internet » PHP »

Cerrar autentificacion apache-mysql

Estas en el tema de Cerrar autentificacion apache-mysql en el foro de PHP en Foros del Web. Buenas: Estoy trabajando con el modulo mod_auth_mysql de apache. Con el hago una autenficacion contra mysql. y luego mediante php inicio una sesion para llevar ...
  #1 (permalink)  
Antiguo 14/10/2004, 03:51
Avatar de chuscazo  
Fecha de Ingreso: abril-2004
Mensajes: 84
Antigüedad: 20 años
Puntos: 0
Pregunta Cerrar autentificacion apache-mysql

Buenas:
Estoy trabajando con el modulo mod_auth_mysql de apache. Con el hago una autenficacion contra mysql. y luego mediante php inicio una sesion para llevar asi unas variables que necesito y que son permisos.

Mi pregunta es como puedo cerrar la sesion. Es que la variable de la que cojo el nombre de usuario es $_SERVER['PHP_AUTH_SERVER'], y sobre esa variable no puedo hacer nada. La unica forma de borrarla por ahora es cerrando el navegador.

Gracias
  #2 (permalink)  
Antiguo 14/10/2004, 06:36
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Así es .. ese es el problema de usar autentificación HTTP.

Podrías usar autentificación (mejor dicho "seguimiento") por sesiones o cookies en su defecto (más fiable y seguro por sesiones) .. así tienes total control sobre los "logout" y demás.

Un saludo,
  #3 (permalink)  
Antiguo 15/10/2004, 03:39
Avatar de chuscazo  
Fecha de Ingreso: abril-2004
Mensajes: 84
Antigüedad: 20 años
Puntos: 0
Una vez autentificado controlo otra serie de permisos inicializando una sesion con el $_SERVER['PHP_AUTH_USER'].
Entonces es seguro que no se puede cerrar la sesion.
¿No se podria obligar al apache a que reinicializara esas variables? asi saldria otra vez la ventena de identifiicacion.
Otra pregunta. ¿Es mas seguro las sesiones que la identificacion http?
  #4 (permalink)  
Antiguo 15/10/2004, 04:23
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Esas variables son enviadas por el navegador en cada peticion a todas las paginas del "dominio". Asi que mientras el navegador piense que debe enviarlas, las enviara.

Mas sobre autentificacion HTTP con PHP en http://www.php.net/manual/en/features.http-auth.php (en los comentarios de los usuarios seguro que hay trucos para deslogear).

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #5 (permalink)  
Antiguo 27/10/2004, 03:32
Avatar de chuscazo  
Fecha de Ingreso: abril-2004
Mensajes: 84
Antigüedad: 20 años
Puntos: 0
solucion

Ya tengo la solucion, que encontre donde Josemi me indico. Ya habia consultado la pagina antes pero no me di cuenta el material que habia. He tardado un poco en enviarla por que he estado un poco ucupado. Esta solucion no funciona para el navegador firefox ya que si vuelves atras en el historial te vuelve a cargar las variables del servidor antiguas.

Desde un boton dirigia a la aplicacion a la pagina cerrar sesion.Este es el codigo:
Código PHP:
<?
session_start
();
session_register("autentificado");
$autentificado "NO";  //[I]Debia de enviarle esta variable, que ademas de                                     decirme que el usuario ya no puede acceder a las paginas que lo hacia antes (sigo controlando la seguridad por sesiones) me ayudaba a que la autentificacion de apache no me la pidiera una y otra vez[/I].

        
echo "<body onload=\"javascript:window.document.logon.submit();\">";
        echo 
"<form action='index.php' METHOD='POST' name=logon>\n";
        echo 
"</form></p>\n";
?>
Despues en la pagina index esta la peticion de autentificacion.

Código PHP:
<?
function autentificacion() {  // provoca la autentificacion apache al cerrrar sesion

    
header('WWW-Authenticate: Basic realm="Usuario"
             Auth_MYSQL on
             Auth_MySQL_Authoritative off
             Auth_MySQL_DB usuarios_apli
             Auth_MySQL_Username admin_user
             Auth_MySQL_Password chusco
             Auth_MySQL_Password_Table usuarios
             Auth_MySQL_Encrypted_Passwords on
             Auth_MySQL_Encryption_Types Crypt_DES
             Auth_MySQL_Username_Field usuario
             Auth_MySQL_Password_Field pass
             require valid-user    '
);


    
header('HTTP/1.0 401 Unauthorized');
    echo 
"Debes introducir un usuario y contrse&nacute;a validos\n";
    exit;
 }

session_start();

if (isset(
$autentificado) && $autentificado=='NO' || !isset($_SERVER['PHP_AUTH_USER'])) {
                unset(
$_SERVER['PHP_AUTH_USER']);
                unset(
$SID);
                
session_unset();  [I]//Ahora destrullo la sesion conla variable antes mencionada de forma que no se ejecuta otra vez la autentificacion. Si el usuario no hubiera introdudido los valores correctos mostraria el mensaje de error o volveria a pedir la autetificacion (depende del navegador).[/I]
                
session_destroy();
                
autentificacion();

}
else {
Aqui va la parte del codigo donde construllo la sesion para el usuario autentificado con las variables del servidor.
  #6 (permalink)  
Antiguo 27/10/2004, 05:26
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Ya que usas sesiones ...

Por qué no usas sesiones para todo? .. con tu própio formulario de "login" (HTML) y tu própia gestión de usuarios?

Un saludo,
  #7 (permalink)  
Antiguo 27/10/2004, 06:04
Avatar de chuscazo  
Fecha de Ingreso: abril-2004
Mensajes: 84
Antigüedad: 20 años
Puntos: 0
Asi es, eso es lo que pasa cuando tu solo haces lo que te dicen. Asi era en un principio pero me pidieron que lo hiciera con un modulo de apache

Gracias por todo
  #8 (permalink)  
Antiguo 27/10/2004, 07:59
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Bueno .. yo soy de la filosofía de intentar exponer el porqué usar un método u otro .. La autentificación HTTP tiene sus ventajas .. pero también sus desventajas como las que ya te han sucedido, .. no tienes control sobre el "formato" de esa "ventanita" donde te piden tus datos de login ... tu aplicación sólo funcionará si usas APache como servidor HTTP (en IIS no funciona .. por ejemplo) .. tampoco en instalaciones de PHP como CGI (bajo Apache u otro servidor IIS).

Lo bueno que tienes es que todo archivo bajo autentificación HTTP de ese directorio está protegido sin más problemas (cosas que se pueden solventar por otros médios también).

Un saludo,
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 22:39.