Ciao, ho provato il tuo suggerimento.

Il meccanismo funziona nel senso che parte lo script del file.php ma non carica la pagina fatto.html (perchè ho pensato di fare una pagina html con il messaggio "fatto...") nell'iframe.

Ho provato così:
Codice PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<
html>
  <
head>
  <
meta http-equiv="content-type" content="text/html; charset=windows-1250">
  <
meta name="generator" content="PSPad editor, [url]www.pspad.com[/url]">
  <
title></title>
  <
script>
    function 
tryToDownload(url) {
       
oIFrm document.getElementById('myIFrm');
       
oIFrm.src url;
       
oIFrm.style.visibility='visible';
    }
    
window.onload setTimeout('tryToDownload("file.php")'500);
    
</script>

  </head>
  <body>
        <iframe id="myIFrm" src="fatto.html" style="visibility:hidden" width="300" height="300"></iframe>
  </body>
</html> 
Poi stranamente il nome del file di download viene forzato a file.php anche se l'header del file.php è:
$nomeFile = "nomeFile_".date('YmdHis').'.txt';
header("Content-Type: application/force-download\n");
header("Content-Disposition: attachment; $nomeFile");
echo "ecc.";

Ammesso che funzioni il tutto, come faccio a caricare la pagina fatto.html nell'iframe dopo aver eseguito il download?

Grazie per il grande aiuto