Un amigo me preguntaba ayer cómo incluir un control de validación en un sitio web de una forma muy sencilla. Deseaba restringir el acceso a determinados usuarios a la descarga de un determinado recurso. Aunque evidentemente no se trata de la mejor forma de proteger una determinada información, ya que el servidor soportaba PHP, y sin necesidad de montar una base de datos, una posible solución podía ser usar la tupla de variables de servidor $PHP_AUTH_USER, $PHP_AUTH_PW para controlar el acceso, a través de un array de parejas nombre_de_usuario/contraseña. La implementación es muy sencilla, y aunque como ya apuntaba no es la mejor a la hora de proteger nuestra información, puede servirnos para salir del apuro y proteger una información determinada sin necesidad de tocar, por ejemplo, los archivos .htaccess y .htpasswd, por ejemplo, o de montar una infraestructura mayor con el mismo fin.
A continuación dejo el código en PHP. Bastaría, por ejemplo, con usarlo como un archivo index.php, incluirlo en la ruta que deseemos proteger, e incluir al final del código (tras el tag de cierre de PHP, ?>) el código HTML que deseemos mostrar en caso de que el usuario de autentique correctamente (por ejemplo, una página con el enlace al recurso que deseemos mostrar).
[php]
<?php
// Introducir aquí los usuarios que deseemos que tengan acceso al recurso
$lista[0]['usuario']='pepe';
$lista[0]['password']='cables';
$lista[1]['usuario']='juanito';
$lista[1]['password']='piscinas';
//...
function autenticar($u,$p)
{
global $lista;
foreach ($lista as $datos)
{
if ( ($datos['usuario'] == $u) AND ($datos['password'] == $p) )
{
return TRUE;
}
}
return FALSE;
}
// $PHP_AUTH_USER, $PHP_AUTH_PW
$user = $_SERVER['PHP_AUTH_USER'];
$pass = $_SERVER['PHP_AUTH_PW'];
if ( !autenticar($user,$pass) )
{
header('WWW-Authenticate: Basic realm="Acceso restringido."');
header('HTTP/1.0 401 Unauthorized');
echo 'Autentifación No Válida';
exit;
}
?>
[/php]
No hay comentarios:
Publicar un comentario