Thorsten: ZIP-Datei öffnen - ohne Link oder Formular

Hallo Forum,

erstmal grüße ich alle, die heute auch arbeiten oder vor dem PC sitzen! Ich bin gerade dabei, mit PHP3 den Download eines Software-Updates zu programmieren. Nach erfolgter Kontrolle der Zugangsberechtigung sollen gleichzeitig eine Bestätigungsseite geöffnet und ein ZIP-Archiv zum download angeboten werden. Das ganze soll so geschehen, daß der Link zu der Datei auf der Seite nicht zu sehen ist - auch kein Formular. Außerdem möchte ich den Einsatz eines Framesets vermeiden. Am liebsten wäre es mir, die Datei einfach mittels einem Befehl an den Browser zu senden, z. B. "open('datei.zip')", und der soll dann damit machen, was er will (WinZip starten oder abspeichern). Kann  mir da jemand helfen?

Gruß, Thorsten

  1. hi,

    ...einfach mittels einem Befehl an den Browser zu senden, z. B. "open('datei.zip')", und der soll dann damit machen, was er will (WinZip starten oder abspeichern). Kann  mir da jemand helfen?

    header("Location:datei.zip");

    müßte funktionieren

    mfG
    Andrea

    1. Hallo Andrea,

      header("Location:datei.zip");

      danke erstmal für den Tip - ist schon mal ein Ansatz. Jetzt habe ich nur noch ein Problem: Nach erfolgtem Download oder gleichzeitig soll auch noch eine Bestätigungsseite aufgerufen werden. Mit dem Header-Befehl kann ich aber nicht zwei Dateien gleichzeitig aufrufen, oder? Der Rest meines PHP-Skriptes wird ja außerdem auch nach dem setzen der Location mit dem Header-Befehl nicht mehr ausgeführt. Weißt Du da vielleicht noch eine Lösung?

      Gruß, Thorsten

      1. Da fällt mir nur folgendes ein:
        Ein Frameset mit der Bestätigungsseite als ein Frame und im anderen Frame das PHP-Script, das die Paßwortabfrage ausführt und den Link auf die Downloaddatei macht. Damit die Bestätigungsseite nicht auch bei falschem Paßwort angezeigt wird, ebenfalls als PHP-Seite mit der Paßwortabfrage ausführen.

        Der Rest meines PHP-Skriptes wird ja außerdem auch nach dem setzen der Location mit dem Header-Befehl nicht mehr ausgeführt.

        Doch, das Script schon, aber weiterer HTML-Code wird nicht mehr angezeigt, weil ja schon auf anderer Seite.

        mfG
        Andrea

        1. Hallo Andrea,

          ein Frameset wollte ich, wie gesagt, eigentlich nicht. Das brauche ich aber auch garnicht. Die Bestätigungsseite wäre auch nur dazu da, einen Eintrag in der Datenbank zu machen, daß das Zip-Archiv heruntergeladen wurde. Wenn Du aber sagst, daß mein PHP-Code auch nach setzen des Location-Headers noch ausgeführt wird, kann ich das ja auch anders lösen - dann bleibt die Seite halt stehen und es wird nur die Zip-Datei heruntergeladen und gleichzeitig die Datenbank aktualisiert --> that‚s it!!!

          Also vielen Dank noch mal und einen schönen Feiertag morgen (ich hoffe doch Du wohnst in Bayern...).

          Gruß, Thorsten

  2. Hallo Thorsten,

    bei download.com wird's so gemacht. Einfach mal in den Quelltext gucken.
    Die bauen in die Downloadseite glaubich einfach diesse Tag ein:

    <meta http-equiv="refresh" content="1; url=http://wo.auch.immer/datei.zip">

    CYa
    GONZO