2016-11-12 5 views
0

Ich möchte den Zugriff auf eine Datei verweigern! Ich sende einen PDF-Link an einen Freund wie folgt: http://www.domain.com/pdf/name.pdf Wenn mein Freund versucht, auf den PDF-Link zuzugreifen, will ich den Zugriff verweigern und auf eine Login-Seite umleiten und hier nach dem ich Benutzernamen und Passwort eingeben, um auf dieses PDF zuzugreifen!Den Zugriff auf eine bestimmte Datei verweigert, aber den Zugriff auf diese Datei nach dem Login zulassen

Vielen Dank für alles!

Update: Nachdem ich ein paar Sachen suchen und lesen ich so gemacht und ist schön Arbeit, oben ist der Code:

RewriteEngine on 
 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?yourdomainname/pdf/ [NC] 
 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?yourdomainname/pdf/.*$ [NC] 
 
RewriteRule ^pdf(/.*)\.(gif|jpg|pdf)$ - [F] 
 
ErrorDocument 403 /error/index.php

+0

Ich schlage vor, Sie beginnen ein paar grundlegende Dokumentationen zu lesen. Dies ist Standard, gut dokumentiert und leicht im Internet zu finden. – arkascha

+0

Richten Sie ein CMS ein, das privaten Zugriff auf Ressourcen bietet. Sie können dann einen Account für Ihren Freund hinzufügen. –

Antwort

1

Sie sollten

einfache .htaccess-Authentifizierung verwenden

/weg/to/pdf/.htaccess

AuthType Basic 
AuthName "protected area" 
AuthUserFile /path/to/pdf/.htpasswd 
Require valid-user 

/path/to/pdf/.htpasswd

Das Passwort muss verschlüsselt und Base64-codiert sein.

myusername:$apr1$EzX1xHNv$NgbgAnflbfzjI0Vhxwv8q. 

können Sie das folgende PHP-Skript ausführen, um ein korrektes Passwort Wert für Ihre htpasswd Datei

<?php 
// Password to be encrypted for a .htpasswd file 
$clearTextPassword = 'some password'; 

// Encrypt password 
$password = crypt($clearTextPassword, base64_encode($clearTextPassword)); 

// Print encrypted password 
echo $password; 
?> 

zu erhalten, wenn jemand auf diese URL zu verbinden versuchen, werden sie zur Authentifizierung aufgefordert werden

enter image description here

+0

Sie können auch das Programm [htpasswd] (https://httpd.apache.org/docs/current/programs/htpasswd.html) verwenden –

0

Sie benötigen eine gewisse Logik in der Server-Seite zu setzen, bevor die PDF-Datei donwload, müssen Sie zunächst eine Server-Seite, die c heck, wenn der Benutzer eingeloggt ist (check for session in php manual), nur wenn der Benutzer eine Session hat, führt man den login aus, um die pdf-Datei herunterzuladen (zu prüfen, ob PDF-Dateien von php heruntergeladen werden), wenn der Benutzer nicht eingeloggt ist der Benutzer auf eine Anmeldeseite und schließlich auf der Anmeldeseite des Servers, wenn Sie überprüfen, ob der Benutzer gültig ist, legen Sie die Daten des Benutzers in Sitzung beispielsweise aus der Datenbank fest.

Ein sehr einfaches Beispiel so aussehen:

//donwloadpdf.php 
if (session_status() == PHP_SESSION_NONE) { 

    session_start(); 
} 

if (!isset($_SESSION['user_id'])) { //user not logged in 

    redirect('login_page.php'); 

} 

//user logged in 
header("Content-type:application/pdf"); 

// It will be called downloaded.pdf 
header("Content-Disposition:attachment;filename='downloaded.pdf'"); 

// The PDF source is in original.pdf 
readfile("PD_FILE.pdf"); 

Sie müssen sie über Sitzungs- und Download-Dateien zu lesen, und auch müssen Sie die Login in Objekten mit eigener Verantwortung stellen.

Und einige sehr einfaches Beispiel für Ihre login_page.php in der Server-Seite wird so aussehen:

//login_page.php 
//if is POST 
//put some real logic to check if the user is valid 
if (true) { 

    $_SESSION['user_id'] = 1; //put real data from database 

} 
//end of logic to check if the user is valid 
Verwandte Themen