Ich baue ein System, das irgendwann die Anzeige von PDF-Dateien nutzt.
Diese Dateien müssen gesperrt werden, damit sie niemand außerhalb des Systems einsehen kann. Das bedeutet, dass die Dateien nicht direkt aufgerufen werden können, sondern nur vom Server abgerufen werden können, um sie dem Benutzer anzuzeigen.
Ich habe einen Ordner documents
, der so aussieht:
.htaccess
test.pdf
test.txt
In meiner .htaccess habe ich Folgendes:
Order Allow,Deny
Deny from all
Dadurch wird der direkte Zugriff auf die Datei blockiert.example.com/documents/test.pdf
Ich muss die Datei trotzdem in meinem System anzeigen können, aber sie kann auch nicht mit der direkten URL geladen werden. Also habe ich direkt außerhalb meines documents
Ordners eine Datei mit dem Namen erstellt load_pdf.php
. Diese Datei sieht folgendermaßen aus:
header("Content-Type: application/pdf");
$pdf = file_get_contents('documents/test.pdf');
echo $pdf;
Und es funktioniert! Ich kann die Datei wie folgt einbetten:
<embed src="/load_pdf.php"></embed>
Allerdings gibt es dabei ein Problem: Jeder kann load_pdf.php
das PDF-Dokument direkt in seinem Browser laden und dadurch anzeigen, obwohl es eigentlich nicht barrierefrei sein sollte.
Gibt es eine Möglichkeit, load_pdf.php
das Laden zu blockieren, sofern es nicht vom Server in meinem <embed>
Element geladen wird?
Antwort1
Sie können die IP-Adresse angeben, von der aus Sie auf die Dateien zugreifen möchten, oder, wenn Sie sich angemeldet haben, eine bestimmte E-Mail-ID verwenden, um die Anzeige zu ermöglichen.
All dies können Sie am Anfang Ihrer load_pdf.php angeben
Antwort2
Nein.
Letztendlich müssen Sie:
Erstellen Sie Bilder für jede Seite
Präsentieren Sie diese dem Benutzer im Web über Ihre eigene Schnittstelle (HTML, Flash usw.)
Antwort3
Sie können dies folgendermaßen tun: -
<Files *test.pdf>
Order allow,deny
Deny from all
</Files>
<Files *test.txt>
Order allow,deny
Deny from all
</Files>