Martin Hein: Download erzwingen

Hallo Forum,

ich benutze seit Ewigkeiten ein Script, dass ich selbst nicht
geschrieben habe. Ich hab mich nie grossartig mit dem Inhalt
auseinandergesetzt, denn es funktionierte immer. Nun gab es
gerade den Fall, dass es auf einem best. Rechner (winXP /IE 6)
nicht funktioniert hat, was ich mir nicht erklären kann ;(

Das Script soll einen Download erzwingen. Sprich: der Browser
soll nicht versuchen, die Datei selbst darzustellen, sondern
einen Download-Dialog starten. (Die Frage, ob das sinnvoll ist,
stellt sich nicht.)

Hier ist das Script:
--------------------

ini_set("memory_limit","50M");

if(!$filename)$filename = $file;
$size = filesize($file);

if (strpos($HTTP_USER_AGENT,"MSIE 5.5")>0||1==1)
  {//IE5.5 + NS ab 4.0
   $fp = fopen($file, "r");
   $contents = fread($fp, $size);
   fclose($fp);
   header("Content-type: application/RFC822");
   header("Content-Disposition: attachment; filename=$filename");
   print($contents);
   exit;
  }
else
    {//NS ab 4.0 & IE 5
     header("Content-Type: application/octet-stream");
     header("Content-Length: $size");
     header("Content-Disposition: attachment; filename=$filename");
     header("Content-Transfer-Encoding: binary");
     $fp = fopen($file, "r");
     fpassthru($fp);
     exit;
    }

1. Wie lässt es sich so anpassen, dass es sicher auf allen Browsern
   funktioniert ?
2. Ich habe eben die erste Zeile ini_set eingebaut, weil php
   sich bei einem sehr grossen Download beschwerte. Habe ich damit
   jetzt nur die merory_size bei der ausführung dieses script hoch
   gesetzt oder pauschal und fliegt mir der server jetzt bald um die
   ohren ?

besten dank und

viele gruesse,
martin

  1. Hi,
    ich benutze schon lange ohne Probleme folgendes Download-Skript:

    $file = ...//Pfad zur Datei
      // Header-Daten erzeugen
      header("Content-Type: application/octet-stream");
      header("Content-Length: ".filesize($file));
      header("Content-Disposition: attachment; filename="".basename($file).""");

    // Datei ausgeben.
      readfile($file);

    Mfg
    Kobold