Para conseguir ese efecto .. debes componer las cabeceras HTTP adecuadas para que tu "navegador" entienda que los datos que se le van a enviar son para que los descargue y no para que los intente asociar al "visualizador/ejecutor" que lo interprete (caso de unas imagenes -> tu navegador por ejemplo .. o un .pdf sería tu lector de PDF que uses .. o un .doc -> word .. etc)
Estas cabeceras HTTP son parte del protocolo HTTP (que lo define sus RFC's correspondientes).
Desde PHP se "lanzan" estas cabeceras HTTP vía la función:
header()
www.php.net/header (donde veras ejemplos de lo que necesitas usar)
Y tras este envio de cabeceras tendras que entregar tu archivo al "buffer de salida" de PHP .. eso lo puedes hacer por ejemplo con la función:
readfile($tu_ruta_nombre_archivo);
Quedando algo tipo:
descargar.php Código PHP:
<?
header ("cabeceras HTTP adecauadas");
readfile($_GET['archivo']);
?>
Y tus links de descarga ahora serán algo tipo:
Código PHP:
<a href="descargar.php?archivo=nose.tal">descargar nose.tal</a>
Eso sí, .. valida que archivos son los que se pueden descargar .. por qué sino pondras algo tipo descargar.php=archivo=config.php y .. me bajaré tu script PHP que tal vez contiene información delicada sobre la conexión a tu BD y otros datos...
Un saludo,