Session gegen Traffic klau und Header

Homwer

Mitglied
Grüße
ich will den "fremd"-Download von meiner Seite unterbinden, und dachte an eine Session als ideale lösung. Die index.php setzt einfach eine session und in der "download" file lasse ich überprüfen ob der wert gesetzt ist

PHP:
<?php
session_start ();
$files = $_GET['file'];
$ok = $_SESSION["user_id"];  //wird in der index mit dem wert OK festgelegt

if ($ok == "OK")
{
$filename = $files[$_GET[what]];

header("Content-Type: x-type/subtype");
header("Content-Disposition: attachment; filename=".$files);
}
else
echo '<div align="center">
  <p>&nbsp;</p>
  <p><strong><font face="Verdana">Externe weiterleitung</font></strong><font face="Verdana"></font><font face="Verdana"><br>
    oder dein Browser unterst&uuml;tzt keine Sessions</font></p>
</div>';
?>

Das Problem ist, durch die Session start am anfang kapt das mit dem Header nicht mehr, ohne funktioniert das script, (bis auf die session abfrage ;) )
 
Wird das „download“-Skript direkt aufgerufen oder nur eingebunden? Header-Informationen können nämlich nur dann noch geändert werden, wenn vorher keinerlei Ausgabe geschehen ist.
 
Wenn es direkt aufgerufen wird, dürfte die von mir vermutete Fehlermeldung („Cannot modify header information“) nur dann auftreten, wenn es vor dem PHP-Block bereits eine Ausgabe gab. Dazu zählen auch Leerzeichen oder Zeilenumbrüche. Also entfernte sie einfach.
Falls es davor jedoch eine Ausgabe von HTML-Code gibt, musst du den PHP-Block einfach an den Anfang des Skriptes setzen und die Ausgabe der selbstdefinierten Fehlermeldung gegebenenfalls über ein zusätzliches Flag steuern.
 
Zurück