mm pero pedro_php .. si yo sé la ruta directa hacia:
http://www.nose.tal/archivo.zip
No pasa por ningún script PHP que pueda validar la existencia de una variable de sesión como es el caso que ya usa dicho método.
La "ruta" completa hacia el archivo lo podrá ver en el primer uso de la aplicación si esta por ejemplo hace un simple link hacia el archivo (no pasa por ningún script PHP que lo "entregue") o bien hace algo tipo.
header("Location: archivo.zip")
pero .. si usa PHP con cabeceras HTTP para hacer algo tipo
<?
header ("cabeceras HTTP adecuadas");
readfile('archivo.zip');
?>
Ya no se vería nunca la ruta del archivo y .. podría ser "ocultada" bajo el nombre de un directorio con un nombre "no tipico: archivos/dowloads ... ¬¬" y siempre y cuando teniendo cuidado que el servidor no esté configurador (el servidor HTTP usado) con la opción "indexer" que hace un listado de los archivos (y directorios) de un directorio que no tenga un index.tal (cosa que se puede solventar poniendo ese index.html en ese directorio de descargas con un aviso tipo "aquí no hay nada que ver XD")
Un saludo,