HTMLpointHTMLpoint HTMLpoint.com


 Autentificación con PHP



Con el PHP y la ayuda de su función "header" es posible programar las páginas protegidas sin utilizar los archivos .htaccess o las autorizaciones del servidor.
Bastará simplemente con enviar un header particular al browser antes de pasarle el output para que, en una página, se pidan username y password para el acceso. Para empezar, hay que copiar este código en un archivo y hay que invocarlo a través del browser:

$username = "tribilín";
$pwd = "secreta";

if(!isset($PHP_AUTH_USER)) {
Header("WWW-Authenticate: Basic realm=\"Zona protegida\"");
Header("HTTP/1.0 401 Unauthorized");
echo "Imposibile ejecutar la autorización\n";
exit;
} else {
if (($PHP_AUTH_USER == $username) && ($PHP_AUTH_PW == $pwd)) {
echo "Autorización ejecutada para $username.";
} else { echo "Autorización fracasada.";}
}


De esta forma, fijamos "tribilín" como nombre del usuario y "secreta" como contraseña. Si los datos introducidos por el usuario en la autorización corresponden a éstos, la autorización se lleva a cabo, si no fracasa.

Pero ¿cómo funciona todo esto?
Empecemos por el funcionamiento del script que acabamos de presentar.
En primer lugar, hay que controlar si se ha fijado la variable PHP_AUTH_USER, es decir, el nombre del usuario que entra en la página protegida. Si existe, posiblemente el usuario se autorice antes y, por esta razón, se "recuerda". De todas formas, tanto si el usuario se ha autorizado anteriormente como si es su primera visita a la página, se controla que el nombre del usuario y la contraseña introducida en la autorización sean excáctamente $username y $pwd. Si coinciden es posible visualizar el output de la autorización que se ha llevado a cabo (lo que hemos fijado como "Autorización llevada a cabo para $username"); si no se da un mensaje de error (en nuestro caso "Autorización fracasada"). Si, en cambio, no existe $PHP_AUTH_USER, se envía un header para la autorización (el código 401) que muestra al usuario la instrucción que le pide username y password. Cuando se han introducido, se ejecutará el bloque que hemos descrito arriba y, si el usuario decide no autorizarse, se le muestra una página que incluye el texto "Imposibile ejecutar la autorización", que se puede personalizar.

La función que controla todo este proceso es "header()", que se utiliza para mandar un header al browser que ha enviado la solicitud. Como lo que se envía es un header, es necesario que éste se envíe antes de cualquier otro output. La función es muy simple: vamos a ver unos ejemplos:

  • si quisiéramos enviar un header que vuelva a mandar el browser a una determinada locación, podemos escribir:

    header("Location: http://www.htmlpoint.com");

  • si, en cambio, quisiéramos enviar un mensaje de página inexistente o una instrucción para que el browser no utilice la cache, podríamos escribir respectivamente:

    header("http:/1.0 404 Not Found");
    header("Pragma: no-cache");

    Llegados a este punto, habéis entendido cómo se vuelve a localizar con PHP sin la ayuda de archivos como .htaccess o archivos parecidos. Por supuesto podéis mejorar los ejemplos que hemos propuesto para implementarlos con éxito en vuestras páginas Web.

  •   Volver al inicio de la página