Basta aggiungere oltre al content-type... etc anche l'header del Content-Disposition...
Codice:
...
header('Content-Disposition: attachment; filename=".$nomefilechevuoisiamostrato."');
readfile($percorsoenomefilechevuoisiasalvato);
$nomefilechevuoisiamostrato e $percorsoenomefilechevuoisiasalvato non necessariamente devono essere uguali.. in questo modo puoi nascondere la locazione reale del file... ed evitare magari deep-link !
Spero sia stato utile!