Está usted en Indice > Construcción > Lenguajes > PHP > Lecciones y Paso a Paso > Autentificación HTTP con PHP
Construcción
Maletín
Utilidades
Cursos
Promoción
Rentabilidad
Zona Novatos
Foros
Acceso a tu cuenta

Autentificación HTTP con PHP (2)

Ejemplo 34-2. Ejemplo de autentificación HTTP forzando una reentrada

<?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).
Nota:
Si safe mode está activado, el uid de el script es agregado a la cabecera WWW-Authenticate




Autor: idiota.es
http://www.idiota.es/php/features.http-auth.html

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


Versión imprimible - Versión imprimible de este documento
Enviar e-mail - Enviar por e-mail este documento
Publicidad






Cursos de Community Manager

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.


Página generada el 25-05-2012 a las 23:44:09