Der einfachste Weg, nur ist wahrscheinlich ein PHP-Skript zu haben, die die Existenz einer gültigen Session erfordert (wie der Generator Skript der Fall ist), dessen Funktion readfile("/path/to/contract.pdf");
ist
Auf diese Weise können Sie Ihre PDF-Wrapper-Skript haben Überprüfen Sie, ob der heruntergeladene Vertrag der RICHTIGE Vertrag für die Person in der Sitzung ist, nicht nur, dass es sich um einen Vertrag handelt, der sich im Verzeichnis befindet.
Das Problem mit einer .htaccess-basierten Lösung für das Verzeichnis besteht darin, dass jeder mit Lesezugriff auf das Verzeichnis ALLE Verträge herunterladen kann.
eine URL wie http://example.com/contract.php?user=132&bill=1
Angenommen, Sie könnten:
<?php
$user = $_GET['user'];
$bill = $_GET['bill'];
# do input validation on $user and $bill. No really, do it.
if ($user != $_SESSION['user']) {
die("Security error; the black choppers are on their way.");
}
header("Content-type: application/pdf");
header('Content-Disposition: attachment; filename="Contract-$user-$bill.pdf"');
readfile("/path/to/pdfspool/$user/Contract-$user-$bill.pdf");
Die if()
Brocken in der Mitte überprüft, ob der Benutzer $ ist für den aktuellen Benutzer gültig angefordert wird. Offensichtlich sollten Sie $ _SESSION ['user'] speichern, wahrscheinlich, wenn sich dieser Benutzer zum ersten Mal anmeldet.
Natürlich müssen Sie die Spooldateien nicht wirklich speichern. Wenn der Prozess der Erstellung einer PDF-Datei Ihren Webserver nicht überfordert (und wenn Sie andere Probleme haben), ist es möglicherweise einfacher, jede PDF-Datei auf Anfrage neu zu erstellen. Das mache ich jetzt mit Unternehmensrechnungen, und jede Rechnung erhält eine 6-Punkt-Fußzeile, die sagt, wann sie generiert wurde und auf welche Anfrage von welcher IP-Adresse. :)
Was ist, wenn der Benutzer klug genug ist, die direkte URL zum PDF-Skript in die Adressleiste einzugeben? Geben Sie beispielsweise www.mysite.com/contracts/124/5.pdf ein. –
Aktualisiert. Ich habe dem Code einen Abschnitt hinzugefügt, der $ user gegen eine Sitzungsvariable validiert. – ghoti