Download von Dokumenten von Eingabe in Formular abhängig.

Wie wir alle wissen (sollten) ändert mod_rewrite keine Links im Script. Damit auch die Links auf Deiner Page auf die neuen "Rewrited URLs" zeigen bedarf es der Anpassung im Code. Fragen und Probleme rund um's Coding werden hier diskutiert.

Moderator: Super-Mod

Download von Dokumenten von Eingabe in Formular abhängig.

Beitragvon Edelsalami » 10.06.2009 16:01

Hallo zusammen,
in einem speziellen Bereich der Website werden den Besuchern Dokumente
zum Download angeboten, die über einen Link verfügbar gemacht werden.
Wenn der Besucher den Link anklickt, soll er erst in einem
Formular einen Namen und eine E-Mail Adresse eintragen und nach
erfolgter Prüfung soll der Download starten.

Die Dokumente (pdf, doc, ppt, xls, ...) sind physikalisch im
Ordner: /images/pdf

Den Request auf die Dateien kann ich abfangen, aber wie "liefere" ich
die Dateien nach der Prüfung aus? Die RewriteRule greift ja jetzt
immer.

Mein Codeschnippsel:
Code: Alles auswählen
RewriteCond %{REQUEST_URI} !^test\.php
RewriteRule ^images/pdf/(.+)$ test.php?pic=$1 [R=301,L]


Vielen Dank schon mal von einem bisherigen "Nur Leser"
Edelsalami
.
.
 
Beiträge: 5
Registriert: 10.06.2009 11:49

Beitragvon Gumbo » 11.06.2009 20:05

Hat zwar wie richtig erkannt nichts mit mod_rewrite zu tun, aber dennoch:
Code: Alles auswählen
<?php

    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment');
    readfile($_SERVER['DOCUMENT_ROOT'].'/images/pdf/'.$_GET['pic']);
    exit;
Aber vergiss nicht die Eingabewerte zu prüfen, da sonst beliebige Dateien angegeben werden können.
Markus Wulftange
Gumbo
Moderator
Moderator
 
Beiträge: 5019
Registriert: 07.01.2005 01:18
Wohnort: Trier

Beitragvon Edelsalami » 16.06.2009 11:09

Hallo Gumbo,
vielen Dank für die super hilfreiche Antwort. Genial Idee, einfach denn Header umzubiegen und die Ausgabe zu erzwingen.

Eine Frage hätte ich noch:

Was mach denn dieses Stück Code?
Code: Alles auswählen
RewriteCond %{REQUEST_URI} !^test\.php

Ich habe es hier im Forum gefunden und es diente mir als erster Lösungsansatz.
Habe es mittlerweile in meinem Code auskommentiert, da es (scheinbar) keinen Unterschied macht.
Ich benutze in meiner .htaccess Datei noch weitere RewriteRule.

Gruß Edelsalami
Edelsalami
.
.
 
Beiträge: 5
Registriert: 10.06.2009 11:49

Beitragvon Gumbo » 16.06.2009 19:31

Diese Bedingung sorgt dafür, dass die damit in Verbindung stehende RewriteRule nur dann angewendet wird, wenn die Bedingung zutrifft, wenn also der REQUEST_URI-Wert nicht mit „test.php“ beginnt. Diese Regel trifft allerdings immer zu, da REQUEST_URI immer mit einem Schrägstrich beginnt und damit nie mit „test.php“ beginnen kann (wohl aber mit „/test.php“).
Markus Wulftange
Gumbo
Moderator
Moderator
 
Beiträge: 5019
Registriert: 07.01.2005 01:18
Wohnort: Trier


Zurück zu Programmierung & Scriptanpassung für mod_rewrite

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste