OLZU: Weiterleitung per PHP (außerhalb Root-Verzeichnis)

Guten Morgen liebe selfHTML-Gemeinde,

ich hoffe, dass dieses Forum auch an einem solchen Tag gut
besucht ist und ich die gewohnte kompetente Hilfe bekomme...   ;-)

Ich wende mich an euch, weil ich etwas in Zeitnot bin.
Gestern Nacht hat mich noch mein "Auftraggeber" angerufen
und um die Verwirklichung eines Vorhabens unbedingt am
24.12. gebeten - quasi ein Weihnachtsgeschenk für die
Hompepage-Besucher.
Es handelt sich hier um eine angebotene Datei, deren Download
aber über ein PHP-Skript laufen soll, damit die Anzahl der
Downloads nicht unbekannt bleibt.  ;-)
Es soll auf keinen Fall möglich sein, die Datei anders als über
dieses PHP-Skript zubekommen.
ASAIK muss die Datei dann auf dem Server irgendwo über dem
Root-Verzeichnis gespeichert werden.
Also, wenn die Startseite meines Prokets im Ordner WWW liegt,
würde ich im Verzeichnis überhalb WWW einen neuen Ordner
"Downloads" erstellen und die Datei dann darin speichern.

Meine Frage ist jetzt nur:
Wie muss die Weiterleitung per PHP aussehen, wodurch muss
hier xxx ersetzt werden?
   header("Location: xxx");

Für euere Antworten bedanke ich mich im Voraus und wünsche
allen frohe Weihnachten.

Besinnliche Grüsse
OLZU

  1. Hello,

    ...da hab ich doch das Passende für Dich:

    schau Dir mal das Script http://bitworks.de/~selfHTML/speichern.php an und mach was draus...

    Liebe Grüße aus http://www.braunschweig.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
  2. Moin!

    Es handelt sich hier um eine angebotene Datei, deren Download
    aber über ein PHP-Skript laufen soll, damit die Anzahl der
    Downloads nicht unbekannt bleibt.  ;-)

    Es gibt Logfiles, die die Auslieferung von angeforderten Dateien bestens dokumentieren.

    Es soll auf keinen Fall möglich sein, die Datei anders als über
    dieses PHP-Skript zubekommen.
    ASAIK muss die Datei dann auf dem Server irgendwo über dem
    Root-Verzeichnis gespeichert werden.

    Nö. Ein Verzeichnis, in dem .htaccess sagt "Deny from all", reicht aus.

    Also, wenn die Startseite meines Prokets im Ordner WWW liegt,
    würde ich im Verzeichnis überhalb WWW einen neuen Ordner
    "Downloads" erstellen und die Datei dann darin speichern.

    Meine Frage ist jetzt nur:
    Wie muss die Weiterleitung per PHP aussehen, wodurch muss
    hier xxx ersetzt werden?
       header("Location: xxx");

    Du kannst keine Weiterleitung nehmen. Weiterleitung würde nur funktionieren, wenn die Datei (was sie nicht soll) per HTTP auch direkt erreichbar wäre.

    Natürlich kannst du es dir leicht machen, diese Bedingung ignorieren und einfach mit einer Weiterleitung arbeiten. Das macht viele Dinge einfacher.

    Ansonsten findest du Downloadauslieferungsskripte mit Sicherheit massenweise im Archiv.

    - Sven Rautenberg

    --
    Die SelfHTML-Developer sagen Dankeschön für aktuell 20885,68 Euro Spendengelder!
  3. Hi!

    Du wirst Dir ne Menge ersparen, wenn Du die Datei direkt zum Download innerhalb des doc-root aufbewahrst.

    Wenn das jetzt keine ganz geheime Datei ist wo man nur mit Passwort oder irgendeiner Authentifizierung dran kommen soll, wenn es nur darum geht downloads zu zählen, dann setze den Download-Link auf ein Script, welches den Browser per header("Location: http://example.com/file.ext"); weiterleitet.

    In diesem Script kannst Du die downloads ebenfalls zählen, ohne dich um irgendwelche Probleme mit HTTP/IE/SSL/session... zu ärgern

    Wie muss die Weiterleitung per PHP aussehen, wodurch muss
    hier xxx ersetzt werden?
       header("Location: xxx");

    Das geht nicht. Du müsstest Die Datei einlesen und ausgeben, ergänzt mit passenden headern, das ist aber nicht ganz so trivial.

    http://de3.php.net/header für einen Einstieg - lies die Komentare!

    Ganz grob sieht das so aus:

    <?php
    // Wir werden eine PDF Datei ausgeben
    header("Content-type: application/pdf");

    // Es wird downloaded.pdf benannt
    header("Content-Disposition: attachment; filename=downloaded.pdf");

    // Die originale PDF Datei heißt original.pdf
    readfile('original.pdf');
    ?>

    Wie gesagt, aber lies die Kommentare! Und noch besser, lass es und mach es mit der Location-Header methode, wie oben beschrieben.

    Für euere Antworten bedanke ich mich im Voraus und wünsche
    allen frohe Weihnachten.

    Dir auch!

    Grüße
    Andreas