In particolare Internet Explorer 6 mi ha dato una bella gatta da pelare con i file da scaricare.
In un'applicazione web che ho scritto è possibile scaricare alcuni file, solo da parte di utenti registrati. Quindi i file stanno fuori dalla visibilità del browser e vengono serviti da un file (download.php, nel mio caso) che, dopo aver fatto i relativi controlli a login e permessi vari, cambia gli header in modo da far scaricare il file scelto. Semplificando molto è una cosa simile:
<?php
session_start();
$db = new db();
checkPermission($_GET['id'],$_SESSION['userid']) || die();
$file = $db->query("SELECT * FROM attachments WHERE id = ".$db->quote($_GET['id']);
header ("Content-type: ".$file['mime']);
header ("Content-disposition: attachment; filename=".$file['name']);
header ("Content-Transfer-Enconding: binary");
@readfile($file['full_path']);
exit();
?>
Risultato? Con Firefox nessun problema, con IE 7 nessun problema (eh meno male!!) ma con IE6... disastro!! I file venivano scaricato, ma IE6 ignorava bellamente l'header content-type e l'header content-disposition, nominando il file "download.php".