Estás mirando la versión 3 de mi sitio web, para ver la última versión por favor anda a juque.cl

juque

Juan Pablo Aqueveque: Ingeniero de Sistemas, Diseñador y Desarrollador Web que reside en Temuco, Chile.

Autentificación HTTP con PHP

Publicado por Juan Pablo el 7.Dic.2004 | Comentarios (2)

De pronto me han solicitado subir al servidor de la UCT documentos bajo cierta restricción de acceso. Imagino que más de alguna vez te han solicitado lo mismo. Pues bien he aquí un simple script en PHP que autentifica el ingreso a un directorio donde presumiblemente se guardan los más importantes secretos de estado.

El script en cuestión utiliza una simple autentificación, no muy elaborado y de rápida implementación, en resumidas cuentas es para sacarte del paso rápidamente, obviamente si necesitas algo más elaborado, como por ejemplo, validar contra alguna Base de Datos, phpjuqueauthenv3 podría ser una solución adecuada.

El script sólo mostrará los archivos con extensión .txt (línea 43) contenidos en el directorio restringido, además de su tamaño. Si deseas poner archivos con otras extensiones (zip's, powerpoints) simplemente cambia la expresión regular:

if ( preg_match("/txt$|zip$|pps$/",$archivo) )

Y dice más o menos así...

	<?php

	/* autentificacion HTTP con PHP
	a: juan pablo Aqueveque -> www.juque.cl
	f: 2004-12-07 15:34:08 
	- - - - - - - - - - - - - - - - - - - - - - - - - - */
	/* setup 

	- - - - - - - - - - - - - */ 
	$usuario = "juque";
	$contrasena = "juque";
	
	$ok = 0;

	if ( ($_SERVER['PHP_AUTH_USER'] == $usuario ) && ($_SERVER['PHP_AUTH_PW'] == $contrasena ) )
	        $ok = 1;
	if ( $ok != 1 )
	{
	    header("WWW-Authenticate: Basic realm=\"Se requiere de una Autorizacion para entrar a esta pagina\"");

	header("HTTP/1.0 401 Unauthorized");
	echo 'La autorizacion es requerida!';
	exit;
	}

	else
	{
	?>
	<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
	    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

	<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
	<title>juque demos | autentificaci&oacute;n HTTP con PHP</title>
	<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
	</head>
	
	<body>

	<h1>Listado de documentos ultra secretos</h1>
	
	<?php
	if ($puntero = opendir('.'))
	{
	echo "<ul>\n";

	while ( false !== ($archivo = readdir($puntero)) )
	{
	if ($archivo != "." && $archivo != ".." )
	{

	if ( preg_match("/txt$/",$archivo) ) 
	printf("<li><a href=\"%s\" title=\"Descargar archivo\">%s</a> - %s KB</li>\n",$archivo,$archivo,round(filesize($archivo)/1024,2));

	}
	}
	echo "</ul>\n";
	closedir($puntero);
	}

	}
	?>
	<div id="pie">juan pablo aqueveque - <a href="http://www.juque.cl" title="juque.cl">juque</a></div>

	</body>
	</html>

Demo

Veamos cómo corre el bicho: juque/juque

Enlace Permanente, Comentarios (2), Publicada en: PHP

Comentarios

1. Juan
7.Dic.2004

Muy buen script, gracias.

Se podran usar algo como wildcards para permitir que muestre todo el contenido de un directorio (y asi no modificar el scripts por cada nuevo tipo de archivo)??

Gracias nuevamente.

2. juque
8.Dic.2004

Juan: En el último párrafo de la entrada dice cómo mostrar archivos con otras extensiones (wildcards), ahora bien, si quieres mostrar todos los archivos contenido sólo quita el if de la línea 43, pero debo advertirte que esta acción también listará el index.php.

Si por ejemplo quieres mostrar archivos: Excel, Word, y Powerpoint debes modificar la expresión regular (línea 43):

if ( preg_match("/xls$|doc$|pps$/",$archivo) )