Anja: Fenster nach header() schließen

Hallo zusammen,

ich habe zu folgendem Problem bisher keine Lösung finden können:

ich habe ein Popup, welches der Anwender zu Gesicht bekommt, wenn er einen Download starten möchte. Hier bekommt er noch einmal nähere Infos zum Download (Größe etc.) und einen Button (PHP / Formular), um den Download dann starten zu können.

Den Download sende ich per

header("Location: www.blabla.de/verz/datei.zip").

Nun soll aber nicht nur der Download beginnen, sondern sich das Popup auch noch schließen. Dafür verwende ich folgendes:

echo "<script language="JavaScript">\n";
echo "<!--\n";
echo "window.close()\n";
echo "// -->\n";
echo "</script>\n";

Jedes für sich funktioniert einwandfrei, nur beides zusammen klappt nicht: das Popup schließt sich nicht, wenn ich zuerst den header sende und anschließend das JS ausgebe (andersherum geht es ja nicht, weil ich vor dem header nichts ausgeben kann).

Unter http://de2.php.net/manual/de/function.header.php habe ich gelesen, dass per anschließendem

exit;

sichergestellt werden kann, dass der nachfolgende Code trotz Umleitung ausgeführt wird. Nur führt dies auch nicht zum Erfolgt.

Es wäre klasse, wenn ihr einen Tipp für mich habt (vielleicht habe ich hier einfach nur etwas falsch verstanden?)!

Herzlichen Dank im voraus,

Anja

  1. Hallo!

    Also, ein kurzer Input, wie es meiner Meinung nach funktionieren könnte. Du lässt das mit dem header weg. Dann machst du auf deinem Popup einen Link, wo man die Datei downloaden kann. Im Link machst du dann noch einen onclick="window.close();". Damit wird dir dann der Download gestartet und das Fenster geschlossen.

    Gruss

    1. Vielen Dank für deine Antwort bense!

      Du lässt das mit dem header weg. Dann machst du auf deinem Popup einen Link, wo man die Datei downloaden kann. Im Link machst du dann noch einen onclick="window.close();".

      Das hätte für mich den Nachteil, dass der Pfad auf den Download im Quelltext ersichtlich wäre. Das würde ich gern vermeiden. Desweitern soll - nachdem der Anwender den Download per Klick angefordert hat - ein Zähler hochgezählt werden. Das wäre dann mit einem direkten Link auf den Download ebenfalls nicht möglich.

      Grüsse,

      Anja

      1. Nochmals hallo!

        Wenn du jetzt aber doch bei dem popup, das du öffnest, einen link auf ein neues fenster öffnest, gleichzeitig das erste popup per onclick="window.close()" schliesst und dann kannst du ja im neu geöffneten php script deinen datenbank-eintrag machen und anschliessend eine header-weiterleitung, dann passiert folgendes: das 2 fenster schliesst sich von selbst, das es sich ja in einen download "umwandelt". das erste fenster hast du schon mit dem window.close() geschlossen.

        also so: <a href="download.php" target="_blank" onclick="window.close();">

        alles klar? :-)

        gruss aus der schweiz

        1. Ok, das klingt logisch. Ich habe es auch gleich ausprobiert und es klappt! Wunderbar! Da habe ich anscheinend einmal zuwenig "um die Ecke" - sprich "in ein neues Popup" - gedacht.

          Viele liebe Grüße aus dem hohen Norden & herzlichen Dank bense!!