Cita: lo que pone funciona perfecto lado2mx si no me equivoco hace que lea un formulario ingresado por el usuario y si es el user y clave me muestre el contenido de upload.php pero igual si una persona pone upload.php en vez de index.php en la barra de direcciones podria entrar al sistema sin ningun problema
Pues .. no es así. Si te fijas en ese código .. se hace la comprovación de dichas variables de user/pass que ingreses por algun formulario .. SI no son correctos no podrá ejecutar el resto de lógica para la descarga del archivo.
Lo que no terminó de comentarte lado2mx que tanto el UPLOAD como el hecho de bajar ese archivo .. quien lo entrega es PHP y no un link directo tipo:
http://talsitio.tal/archivos/archivo.zip
Sino que es tu lógica la que (usando parte de lo que te puso lado2mx) hará por ejemplo un:
Código PHP:
header("content-type: MIME formato que le corresponda u otras cabeceras HTTP"); // Cabeceras HTTP para el navegador sepa q va un archivo adjunto para descargar ..
readfile("archivoruta/archivo.zip"); // lee el archivo y lo entrega al buffer de salida de PHP
Y .. bueno .. así la descarga de un archivo se la pedirías así:
descargar_archivo.php?id=algo
donde id=algo .. sería algun indentificativo del archivo a descargar y en en ese script descargar_archivo.php tendrás tu lógica que valide al usuario .. por ejemplo Mostrandole el formulario de "Login" si no está ya autentificado por algun otro médio como cookies o sessiones ..
A todo esto .. Tus archivos como ya te dije .. los deberías tener FUERA de tu "DOCUMENT ROOT" para que no pueda accederlos poniendo en el URL algo tipo:
http://www.talsitio.tal/archivos/archivo.zip ... pues ya no estaría ahí .. ni en el raiz .. sino mas arraiba en la estructura de directorios ..
En resumen .. para evitarte los problemas de autentificación .. Lo que tienes que usar es COOKIES o SESSIONES para identificar a tu usuario y hacerle el seguimiento en todas las páginas de tu sistema de "UPLOAD" y "DOWNLOAD" que vas hacer .. Eso, sumado a la técnica del "download" en la que PHP es el que "entrega el archivo" como te mencioné ...
Un saludo,