Moin,
vielleicht solltest du mit einem Zwischenschritt arbeiten.
Also, erst auf eine Datei springen, mit der du die Session startest und da entscheiden, ob der Download zulässig ist oder nicht.
Ist er zulässig, machst du mit header("Location:...) ein Redirect auf deine showfile.php, ist er nicht zulässig, kannst du z.B. ein Redirect auf eine Fehlerseite machen.
mir fällt grad auf, dass das natürlich völliger Quatsch ist, denn es geht ja genau darum, dass du kein header mehr benutzen kannst, wenn du die session gestartet hast....
Wobei der Ansatz mit dem Zwischenschritt nicht so verkehrt ist :-)
Statt des Redirects kannst du nach der Überprüfung entweder den endgültigen Link zum Download ausgeben oder halt einfach einen Text, dass der Benutzer keine Erlaubnis zum Download hat.
MfG,
Juan