Severin Kacianka: Datei zum "download" anbieten

Hallo liebes Forum,

ich habe Dateien in einem per .htaccess geschützten Verzeichnis liegen und möchte diese angemeldeten Benutzern zum Download anbieten.
Ich sende zuerst die HTTP-Header und gib dann die Datei per readfile() aus:

  
        header('Content-Type: application/force-download');  
        header('Content-Length: ' . filesize($file));  
        header("Content-Disposition: attachment; filename=\"".basename($file)."\";");  
        readfile($file);  

(Das ganze Skript: http://kacianka.at/download.phps)

Jetzt habe ich das Problem, dass ich anscheinend die Ruhe von HTTP irgendwie störe. Das äußert sich in komischen Fehlern:
Der IE erlaubt es nicht diese Dateien herunterzuladen.
Manchmal klappt es auch im Firefox nicht.
Ab und zu wird nach einem Download eine "normale" Webseite im Plaintext als "rohes" HTTP ausgeliefert.

Kann es daran liegen, dass ich das ganze über SSL-Verschlüssle? Oder ist meine HTTP unsauber?

Gruß und danke für eure Zeit,
Severin

--
They that can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.
-- Benjamin Franklin
  1. Kann es daran liegen, dass ich das ganze über SSL-Verschlüssle? Oder ist meine HTTP unsauber?

    Gruß und danke für eure Zeit,
    Severin

    Hallo severin,
    Ich bin zwar kein Profi aber verstehe sowieso nicht warum die Browswer so angefeindet sind stat kompatibel miteinander zu sein,
    ansonsten mein empfehlung als leie kanst auch JavaScript verwenden um Downloads anzubieten wen du möchtest schreibe ich den script hierher.

    Gruß

    Blitz

    1. Hallo,

      ansonsten mein empfehlung als leie kanst auch JavaScript verwenden um Downloads anzubieten wen du möchtest schreibe ich den script hierher.

      Danke für deine Hilfe, aber JavaScript ist keine Option. Im Gegenteil: Die Dateien sind für einen "normalen" Client nicht lesbar.

      Gruß,
      Severin

      --
      They that can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.
      -- Benjamin Franklin
  2. Hallo,

    header('Content-Type: application/force-download');

    was ist das für ein MIME-Typ? Der ist mir noch nicht begegnet. Ich hätte an dieser Stelle application/octet-stream erwartet.

    Kann es daran liegen, dass ich das ganze über SSL-Verschlüssle? Oder ist meine HTTP unsauber?

    Keine Ahnung. Aber ich würde es zunächst mal ohne SSL-Verschlüsselung testen. Wenn dann immer noch die beschriebenen Probleme auftreten, dann hast du wohl wirklich ein Problem mit "deinem HTTP".

    Schönen Abend noch,
     Martin

    --
    Es sagte...
    ein korpulenter Lehrer zu einem Schüler, der ihn ein Fass genannt hatte: "Nein. Ein Fass ist von Reifen umgeben, ich dagegen von Unreifen."
    1. Hallo Martin,

      Keine Ahnung. Aber ich würde es zunächst mal ohne SSL-Verschlüsselung testen. Wenn dann immer noch die beschriebenen Probleme auftreten, dann hast du wohl wirklich ein Problem mit "deinem HTTP".

      Es liegt anscheinend nur daran, dass ich die Dateien auch über die gesicherte Verbindung schicken will. Ohne SSL gibt es keine Probleme.
      Hast du eine Ahnung woran das liegen könnte, oder sollte ich auf SSL verzichten (würde ich ungern - stehe aber etwas unter Zeitdruck)?

      Gruß,
      Severin

      --
      They that can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.
      -- Benjamin Franklin
      1. Hi!

        Es liegt anscheinend nur daran, dass ich die Dateien auch über die gesicherte Verbindung schicken will. Ohne SSL gibt es keine Probleme.

        Gut, denn dann scheint es nicht dein Fehler zu sein.
        Schlecht, denn dann hast du anscheinend keine Handhabe.

        Hast du eine Ahnung woran das liegen könnte, oder sollte ich auf SSL verzichten (würde ich ungern - stehe aber etwas unter Zeitdruck)?

        Da fragst du leider den falschen. Ich habe bisher gar keine Erfahrung mit SSL (außer als Nutzer). Und ich bin auch der Meinung, dass mit dem Einsatz von Verschlüsselungstechniken eher übertrieben wird. Was für hochbrisante Daten sind das, die du übertragen willst? Kreditkartennummern? Krankenakten? Militärgeheimnisse? Wenn ich wüsste, was es wirklich ist, würde ich wahrscheinlich sagen, lass das mit der Verschlüsselung doch einfach.

        Ciao,
         Martin

        --
        Schildkröten können mehr über den Weg berichten als Hasen.
        1. Hallo,

          Da fragst du leider den falschen. Ich habe bisher gar keine Erfahrung mit SSL (außer als Nutzer). Und ich bin auch der Meinung, dass mit dem Einsatz von Verschlüsselungstechniken eher übertrieben wird. Was für hochbrisante Daten sind das, die du übertragen willst? Kreditkartennummern? Krankenakten? Militärgeheimnisse? Wenn ich wüsste, was es wirklich ist, würde ich wahrscheinlich sagen, lass das mit der Verschlüsselung doch einfach.

          mmmh dann werde ich es wohl weglassen und vielleicht später Nachrüsten. Ich würde sehr gerne SSL-Verwenden einfach weil es "sicherer" ist. Wenn der Server schon die SSL-Bibliotheken hat kann man sie ja auch gleich nutzen. Sicher sind es keine Hochsicherheitsdaten, aber ich muss es ja einem Angreifen nicht unötig leicht machen.

          Gruß,
          Severin

          --
          They that can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.
          -- Benjamin Franklin