Zum Inhalt springen

PHP: PDF-Dokumente nur nach Login abrufbar?! Wie?!


Empfohlene Beiträge

Hallo zusammen ...

ich möchte über ein Script PDF-Dokumente in ein Unterverzeichnis auf einen Webserver laden.

Dann bekommen bestimmte Benutzer einen Login für einen Adminbereich. Wenn Sie sich dort einloggen bekommen Sie alle PDF-Dokumente aufgelistet und sollen diese anschauen und auch speichern können.

Soweit so gut. Nun soll es aber so sein, dass diese oder andere Besucher der Webseite die PDF-Dokumente nicht direkt aufrufen können (also z.B. http://www.meinserver.de/dokument.pdf), sondern nur wenn Sie eingeloggt sind.

Welche Möglichkeiten habe ich, um das zu realisieren? Und wie funktioniert es?

Freue mich über jede Antwort.

Danke vorab! :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo!

Danke für die Antwort. Wie würde das denn mit htaccess funktionieren? Ein Beispiel würde mir sehr viel weiterhelfen ....

Ich habe auch schon von der Lösung mit htaccess gehört, aber ich kann mir nicht vorstellen wie das funktionieren soll, dass man einerseits nicht direkt auf die Datei über den Browser zugreifen darf andererseits aber das Script genau dieses PDF aufruft ?!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Es gibt prinzipiell zwei Möglichkeiten:

Absicherung direkt über den Webserver mittels .htaccess oder ähnlichem (wie oben angesprochen).

Das hat allerdings den Nachteil, dass es schlecht konfigurierbar ist, da du alle User immer direkt im Apache anlegen und verwalten musst.

Die zweite Möglichkeit wäre die Datei selber nicht im öffentlichen Verzeichnis des Webservers zu speichern, sondern irgendwo in einem anderen - privaten - Verzeichnis. Über eine dynamische Seite (z.B. PHP) liest du dann - nach erfolgter Anmeldung durch den Benutzer - diese Datei aus, und schickst sie dann manuell an den User, als quasi ein File-Relay.

Link zu diesem Kommentar
Auf anderen Seiten teilen

verstehe nur nicht warum ich verschiedene User anlegen müsste

Müssen nicht. Du kannst theoretisch ein und dasselbe Passwort für alle User verwenden, wenn dann allerdings einer ausgeschlossen werden soll, wegen Missbrauch o.ä. dann musst du direkt an alle anderen auch ein neues Passwort vergeben. Wenn das nur ein kleiner Kreis ist - kein Problem, ansonsten musst du dir schon eine kleine Userverwaltung anlegen.

denn im Prinzip ist das PHP-Script doch der User

Hä? Wie kann dein ein PHP Script ein User sein? Das müsstest du mir schon erklären.

Link zu diesem Kommentar
Auf anderen Seiten teilen

hm.... wo kann ich dazu ein Beispiel finden?! Also htaccess wäre mir lieber.... verstehe nur nicht warum ich verschiedene User anlegen müsste .... denn im Prinzip ist das PHP-Script doch der User und das Script ist ja immer dasselbe ?!?!

Ja das Script ist und bleibt dasselbe, jedoch können sich über dieses Script verschiedene User zugriff auf deine Dateien beschaffen. Wenn du nun 1 Passwort für 50 User nutzt haste schnell mal 100 User, da einer das PW weitergegeben hat und da es für jeden gleich ist, kann sich jeder einloggen.

Wenn du nun aber jedem User einen eigenen Account gibst ist diese Weitergabe des PWs eher geringer. Zwar nicht auszuschliessen aber geringer. Du könntest auch die Zugriffe loggen und ab 3 mal oder so erstma sperren und nochmal kontrollieren was da los ist und ob da wer anderes drauf zugreift.

Eine Alternative wäre auch die Dateien in die Datenbank zu packen, jedoch zieht das, falls die Dateien gross sind, Platz und das sollte nicht der Sinn der Sache sein.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ok, eine kleine Userverwaltung ist erstmal nicht notwendig. Ich brauche wirklich nur einen Zugang für alle Kunden und einen Zugang für den Admin.

Die Kunden haben keine Rechte ausser die PDFs aufgelistet zu sehen und diese dann anklicken / aufrufen zu können.

Nur dürfen die PDFs nicht OHNE erfolgten, erfolgreichen Login geöffnet / angesehen werden können.

Würde das so wie ich das beschrieben habe mit htaccess funktionieren und wenn ja, wie genau?!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Es gibt prinzipiell zwei Möglichkeiten:

PHP bietet auch Module fuer PAM und macht damit einiges Moeglich. ;)

Absicherung direkt über den Webserver mittels .htaccess oder ähnlichem (wie oben angesprochen).

Das hat allerdings den Nachteil, dass es schlecht konfigurierbar ist, da du alle User immer direkt im Apache anlegen und verwalten musst.

Dann nimmt man das Beste von Beidem. :)

http://docs.php.net/en/features.http-auth.html

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo ihr.

Also ich habe nen Tip bekommen, dass ich es mal mit folgendem Script versuchen sollte:

das verzeichnis mit den pdfs abriegeln per .htaccess

Quellcode: 

Order deny,allow

Deny from all

Allow from localhost

Allow from 127.0.0.1
dann in dem php file per session halt regeln wer berechtigt ist, und wer nicht, und dann die php so öffnen lassen: PHP-Quellcode:
<?php

$file = '/geschuetzterordner/test.pdf';

header('Content-Type: application/pdf');

header('Content-Disposition: attachment; filename="'.$file.'"');

readfile($file);

?>
Das funktioniert nicht, WEIL wenn ich das Skript aufrufe kommt das hier: Warning</b>: readfile(): open_basedir restriction in effect. File(/geschuetzterordner/test.pdf) is not within the allowed path(s) Warning</b>: readfile(/geschuetzterordner/test.pdf): failed to open stream: Operation not permitted in ... und so weiter.... Und wenn ich das so schreibe: PHP-Quellcode:
<?php

$file = './geschuetzterordner/test.pdf';

header('Content-Type: application/pdf');

header('Content-Disposition: attachment; filename="'.$file.'"');

readfile($file);

?>

kommt zwar kein Fehler mehr, aber er frägt mich ob ich die Datei 'geschuetzterordner' öffnen oder speichern möchte .... mache ich denn was mit der verzeichnisangabe falsch ....!?!

Zusatzinfo: auf meinem server ist safe-mode: ON.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hier steht doch was das Problem ist.

siehe: http://de2.php.net/features.safe-mode

Wenn du direkt an die PHP.ini kannst trag dein Verzeichniss da ein. Ansonsten sollte:


ini_set('open_basedir", '/geschuetzterordner');
[/php]

helfen

meiner Meinung nach war bloß der Pfad falsch.

Wenn er auf einem VServer z.b. von Strato arbeitet, dann hat er nur berechtigungen innerhalb seines ServerRoots. Da kann er nicht einfach in "/geschützerordner" gehen.

@ Threadsteller:

Auf welchem Pfad liegt das PHP Script mit dem du in den Geschützten Ordner zugreifen willst?

hast du das auch Online damit man sich das ma anschauen kann?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wenn er auf einem VServer z.b. von Strato arbeitet, dann hat er nur berechtigungen innerhalb seines ServerRoots. Da kann er nicht einfach in "/geschützerordner" gehen.

Stimmt, PHP geht ja vom Server Root aus nicht vom Domain Root. Und ein Öffnen sollte ja auch für das eigene Verz. und alle Unterverzeichnisse möglich sein (trotz open_basedir).

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...