<?php
function authenticate () {
header ( 'WWW-Authenticate: Basic realm="Test Authentication System"' );
header ( 'HTTP/1.0 401 Unauthorized' );
echo "You must enter a valid login ID and password to access this resourcen" ;
exit;
}
if (!isset( $_SERVER [ 'PHP_AUTH_USER' ]) ||
( $_POST [ 'SeenBefore' ] == 1 && $_POST [ 'OldAuth' ] == $_SERVER [ 'PHP_AUTH_USER' ])) {
authenticate ();
}
else {
echo "<p>Welcome: { $_SERVER [ 'PHP_AUTH_USER' ]} <br>" ;
echo "Old: { $_REQUEST [ 'OldAuth' ]} " ;
echo "<form action=' { $_SERVER [ 'PHP_SELF' ]} ' METHOD='POST'> n " ;
echo "<input type='hidden' name='SeenBefore' value='1'>n" ;
echo "<input type='hidden' name='OldAuth' value=' { $_SERVER [ 'PHP_AUTH_USER' ]} '> n " ;
echo "<input type='submit' value='Re Authenticate'>n" ;
echo "</form></p>n" ;
}
?>
Este comportamiento no es requerido por el estándar de autentificación básica de HTTP, por lo que nunca debe depender de esto. Pruebas con Lynx han demostrado que Lynx no borra las credenciales de autentificación con una respuesta 401 del servidor, por lo que pulsando atrás y después adelante abriría el recurso de nuevo (siempre que los requerimientos de contraseña no hayan cambiado).
Además tener en cuenta que hasta la version de PHP 4.3.3, la autentificación HTTP no funcionaba con el servidor IIS de Microsoft y la versión CGI de PHP, debido a una limitación de IIS. Para que funcione a partir de PHP 4.3.3, debeis de editar vuestra configuración sobre "Seguridad en directorios" en IIS. Pulsar en 'Editar" y elegir solamente "acceso anonimo", todos los demas campos no se deben de elegir.
Otra limitación es, si estais usando el módulo de IIS (ISAPI), que no podeis usar las variables PHP_AUTH_* , en su lugar debeis utilizar la variable HTTP_AUTHORIZATION . Por ejemplo: list($user, $pw) = explode(':', base64_decode(substr($_SERVER['HTTP_AUTHORIZATION'], 6)));
Nota para IIS: Para que la autentificación HTTP funcione con IIS, la directiva de PHP cgi.rfc2616_headers debe de tener el valor 0 (valor por defecto).Usuarios que han visto este tema también han visto...
- Primeros pasos para generar aplicaciones de Facebook
- Nube de etiquetas con enlaces
- Usuarios activos con PHP con base de datos
- Leer un archivo de texto con PHP
- Variables predefinidas en PHP
Información legal | Política de Privacidad | Contacte con nosotros
Otro proyecto de Factoría de Internet. Copyright© 2003-2011 Factoría de Internet S.L.. Todos los derechos reservados.