Usa sesiones; debes incluir
session_start(); antes de enviar cualquier contenido al navegador en todas las paginas (al menos en las que esten involucradas con la descarga) y, ojo, es en todas las paginas, no en todos los archivos de tus scripts.
Cuando el usuario hace click en descargar:
Código php:
Ver original$minutos = 1; // Cambias este si deseas bloquear por mas tiempo
$bloquear = time() + ($minutos * 60);
// Verificas y bloqueas
if(isset($_SESSION['bloquear']) && $_SESSION['bloquear'] > $bloquear) { die('No puedes descargar todavia, intenta mas tarde.'); }
// Si puede descargar, inicializa el bloqueo
$_SESSION['bloquear'] = time();
// Aqui continuas normal