Comience la descarga automáticamente cuando un usuario navega a otra página

Me preguntaba cómo lograr un efecto que he visto en varios sitios web, donde hago clic en un enlace de descargar ahora, me lleva a otra página y la descarga se inicia automáticamente. Cuál es la mejor manera de lograr esto?

Redirigir a una página que emite los siguientes encabezados:

header("Content-Disposition: attachment; filename=$filename"); header("Content-Length: $length"); 

Vea esta publicación sobre las restricciones en $filename .

editar en respuesta a la respuesta de andr, el equivalente php de redirect-after-x-seconds sería:

 header("Refresh: 2; url=start_download.php"); 

(aunque debería especificar oficialmente una URL completa, creo) donde start_download.php contendría las dos líneas anteriores.

Primero, muestra la página con algún contenido (espera, bla, bla) y luego redirige al archivo en sí o al script que muestra el archivo. La redirección se realiza mediante metaetiqueta o javascript:

  1. html: donde «5» está en segundos
  2. js en la carga de la página: setTimeout("location.href=http://example.com/foo.zip", 5000) donde «5000» está en milisegundos.

Si elige generar el archivo a través del script php, siga la respuesta de mvds.