domenica 31 agosto 2008

IE 6: header Content-disposition ignorati (ignored) !!FIXED!!

Tra tutti i browser del mondo, quello che mi da più rotture è Internet Explorer. Ho smesso anche di usarlo, ma non per sentimenti di ribellione incondizionata e pinguinosa nei confronti di Microsoft, ma perché credo che Firefox sia meglio, soprattutto se di lavoro si fa lo sviluppatore web. Nonostante tutto però gli utenti usano IE, e parecchi ancora usano IE 6.

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".

sabato 2 agosto 2008

Risultato del sondaggio....

Mmm...il sondaggio sul linguaggio di programmazione preferito non ha avuto il risultato che speravo... se votava più gente era meglio...

Comunque, per quanto in pochi abbiano votato, il linguaggio inventato da Dennis Ritchie (Brian Kernighan ha solo aiutato Ritchie a scrivere il manuale, ma il linguaggio è tutto sudore di Ritchie!) esce vincitore, anzi stra-vincitore, con il 71% dei vostri voti...a breve quindi un post riguardante il linguaggio C!!!