Ana: Rechts Klick und Download Skript

hallo,

ich habe mir ein download script gebaut.

script.php?url=www.doman.de/datei.zip

Nach dem ich den Aufruf gezählt benutze ich einfach
eine header('Location: $_GET[url]');

das problem ist nun das man im MSIE einfach rechts klick speichern unter benutzen kann
aber mit dem FireFox läd man die datei script.php runter aber es ist der inhalt von datei.zip.
also wenn ich die herruntergeladene script.php umnenne ist es ein funktionierendes archiv

wie kann ich firefox sagen das er einen anderen dateinamen nehmen soll?

  1. Salü

    wie kann ich firefox sagen das er einen anderen dateinamen nehmen soll?

    Anders als der IE nimmt der Firefox korrekterweise den Namen deiner Datei als Dateiname anstatt dem letzten Teilstring in deinem Query String der aussieht wie ein Dateiname.

    Abhilfe schafft ein korrekter Header, der folgende Zeile beinhaltet:

    Content-Disposition: attachment; filename="DeinDateiname"

    gruss

    lightfly

    1. hallo lightfly,

      das habe ich auch schon ausprobiert aber:
          header("Content-Disposition: attachment; filename=test.zip");
          header("Location: $_GET[url]");

      führt immernoch dazu das ich die datei script.php im dialog stehen habe : (

      1. Salü

        das habe ich auch schon ausprobiert aber:
            header("Content-Disposition: attachment; filename=test.zip");
            header("Location: $_GET[url]");

        Ja das funktioniert in der Tat nicht, weil der Browser nach der Location Anweisung einen neuen Header bekommt vom Ziel Server.

        Den Firefox intressiert es allerdings nicht, er nimmt einfach mal den Dateinamen, ganz im gegensatz zu den anderen Browsern, die erst mal den Header vom Ziel Auswerten, bevor die Downloadbox angezeigt wird.

        Mir ist kein Weg bekannt dieses Problem im Firefox zu umgehen, ausser die Datei direkt auszugeben, was a) gewisse risiken und b) einen traffic redirect über deinen server bedeutet. Solltest du dich für diese Methode entscheiden, darfst du ausserdem die zieladresse nicht mehr einfach mit $_GET["url"] ungeprüft durch dein Script laufen lassen.

        Bleibt noch die Frage warum ein Benutzer die funktion "Ziel Speichern unter" benutzen muss. Ich gehe mal davon aus das die meisten ganz einfach den Link anklicken.

        gruss

        lightfly