Descarga de archivos en PHP

 Alguna vez nos ha pasado que necesitamos que un archivo en concreto sea descargado en vez de visualizado por la Web. El problema es que algunos archivos tipo .zip, .doc, .rar ya están asociados a nuestra máquina y esta los intenta abrir en vez de descargarlos.

Pues bien, esto es fácilmente solucionable si usamos el encabezado "octet-stream" para enviar el archivo... este encabezado le dice al navegador que vamos a recibir un paquete... pero no sabe cual, ejemplo:

$enlace = $path_a_tu_doc."/".$id;
header ("Content-Disposition: attachment; filename=".$id." ");
header ("Content-Type: application/octet-stream");
header ("Content-Length: ".filesize($enlace));
readfile($enlace);
?>

Esta página la nombramos como "download.php" por ejemplo y para enviar a descargar el archivo la usamos de esta manera:

download.php?id=archivo.pdf

Seguidamente del id= debemos de color el nombre del archivo que deseamos descargar.

Espero que os sirva de ayuda