- Ad -
php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here!

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 27-06-2005, 11:55
vindiesel
 Newbie
Links : Onlinestatus : vindiesel ist offline
Registriert seit: Jun 2005
Beiträge: 20
vindiesel ist zur Zeit noch ein unbeschriebenes Blatt
Standard PDF-Files schützen

Hallo Leute,

bei uns wurde ein User-Verwaltungssysten für einen Kurs mit Hilfe von PHP und Postgresql erstellt.
Beim Anlegen von neuen Usern werden diese in einer Tabelle angelegt und die Passwörter werden mit Hilfe von md5() verschlüsselt.

Nun möchte ich aber den Zugriff auf die PDF-Dateien, welche in einem separaten Ordner innerhalb des Kurses liegen nur dann freigeben, wenn der User sich diese auch ansehen darf.
Habe das bisher so gemacht, dass die Links zu dem PDF-Dateien nur angezeigt werden, wenn das entsprechende Flag in der Tabelle dafür gesetzt worden ist.
Wenn die Leute allerdings die URL zu den PDF-Files haben, können sie diese allerdings direkt aufrufen.

Wie kann ich das verhindern?
Eine Möglichkeit wäre natürlich den Ordner, welcher die PDF-Dateien enthält mit ner .htaccess zu schützen, aber ich glaube nicht, dass dies in diesem Fall funktioniert...

Hat jemand ne Idee?


THX
Martin
Mit Zitat antworten
  #2 (permalink)  
Alt 27-06-2005, 12:15
zyrano
 Newbie
Links : Onlinestatus : zyrano ist offline
Registriert seit: Apr 2005
Beiträge: 16
zyrano ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Was sind das für PDF-Dokumente?
Wäre es denkbar diese erst zur Laufzeit, sprich in PHP
selber zu erstellen? Dann bräuchtest Du diese nicht auf dem
Server direkt ablegen und keiner käme mit einem
"Direkt-Link" dran.
Mit Zitat antworten
  #3 (permalink)  
Alt 27-06-2005, 12:23
vindiesel
 Newbie
Links : Onlinestatus : vindiesel ist offline
Registriert seit: Jun 2005
Beiträge: 20
vindiesel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Die PDF-Dokumente enthalten die Teile des Kurses.
Es ist sozusagen eine Druckversion des Online-Kurses!

Wie funktioniert das denn mit den PDF-Files, wenn man diese durch PHP erstellen lässt?

Wenn der User das Flag hat, dass er sich diese PDF-Files anschauen kann, dann sieht er auch die entsprechenden Links in dem Fenster.
Wie würde das denn dann funktionieren?
Immerhin werden diese Links durch <a href...> dargestellt. und da müsste man doch nen statische Adresse angeben, oder?!
Mit Zitat antworten
  #4 (permalink)  
Alt 27-06-2005, 12:29
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.481
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard Re: PDF-Files schützen

Zitat:
Original geschrieben von vindiesel
Eine Möglichkeit wäre natürlich den Ordner, welcher die PDF-Dateien enthält mit ner .htaccess zu schützen, aber ich glaube nicht, dass dies in diesem Fall funktioniert...
Warum sollte das nicht funktionieren?

Um dir die Pflege der .htaccess/.htpasswd zu sparen, könntest du jeden Request auf eine .pdf auf eine download.php?file={requested_pdf} weiterleiten (mod_rewrite).

Die download.php ...
- check_user();
- header('pdf-download-header');
- readfile($requested_pdf);
Mit Zitat antworten
  #5 (permalink)  
Alt 27-06-2005, 12:36
vindiesel
 Newbie
Links : Onlinestatus : vindiesel ist offline
Registriert seit: Jun 2005
Beiträge: 20
vindiesel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

@onemorenerd

Geht das auch etwas ausführlicher?
Habe nämlich in php bisher nicht wirklich viel gemacht und kann daher mit deinem Vorschlag nicht so viel anfangen!
Mit Zitat antworten
  #6 (permalink)  
Alt 27-06-2005, 12:51
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.481
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Natürlich gibts den Tipp auch in XL, aber ohne alles vorzukauen.

Ausgangslage: Alle PDFs in einem Verzeichnis.
Schritt 1: In dem Verzeichnis eine download.php erstellen, die folgendes macht:
- den User überprüfen, so wie du es sonst auch machst (mit Session oder oder)
- prüfen ob mit GET etwas übergeben wurde
- prüfen ob es ein entsprechendes PDF gibt
- mit header() dem Browser klarmachen, das jetzt ein PDF kommt
- mit readfile() das PDF an den Browser weiterreichen
Schritt 2: In dem Verzeichnis eine .htaccess erstellen:
- mit mod_rewrite alles was (.+\.pdf) heißt auf download.php?pdf=$1 umschreiben
Effekt: User klickt auf Link foo.pdf, .htaccess bewirkt Ausführung von download.php?pdf=foo.pdf, User bekommt foo.pdf - wenn er authorisiert ist.

Geändert von onemorenerd (27-06-2005 um 12:53 Uhr)
Mit Zitat antworten
  #7 (permalink)  
Alt 27-06-2005, 20:12
ExInfernis
 Junior Member
Links : Onlinestatus : ExInfernis ist offline
Registriert seit: Jan 2004
Ort: Berlin
Beiträge: 213
ExInfernis ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ha, das hat ja mal gepasst.

Hab heute auch nach einer Möglichkeit gesucht meine pdf-Files zu schützen und obiges gleich mal angewandt, läuft einwandfrei!!!
Mit Zitat antworten
  #8 (permalink)  
Alt 28-06-2005, 10:46
vindiesel
 Newbie
Links : Onlinestatus : vindiesel ist offline
Registriert seit: Jun 2005
Beiträge: 20
vindiesel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

@ExInfernis

Kannst du bitte mal den Inhalt deiner .htaccess posten?
Bei mir hakts an dieser Stelle leider noch...
Mit Zitat antworten
  #9 (permalink)  
Alt 29-06-2005, 04:53
ExInfernis
 Junior Member
Links : Onlinestatus : ExInfernis ist offline
Registriert seit: Jan 2004
Ort: Berlin
Beiträge: 213
ExInfernis ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Sorry, hat ein wenig gedauert:

Zitat:
RewriteEngine On

#Alle Anfragen fuer .pdf Dateien wird an download.php umgeleitet
RewriteRule ^(.+\.pdf)$ download.php?downid=$1
Mit Zitat antworten
  #10 (permalink)  
Alt 29-06-2005, 08:48
vindiesel
 Newbie
Links : Onlinestatus : vindiesel ist offline
Registriert seit: Jun 2005
Beiträge: 20
vindiesel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hmmm....merkwürdig!
Bei mir steht folgendes:
RewriteRule ^(.+\.pdf)$ download.php?pdf=$1
Bekomme allerdings jedesmal folgende Fehlermeldung:

Fehler
Sie haben versucht auf die Seite www.xyz.de/blabla/PDF/download.php zuzugreifen
Diese Seite nicht vorhanden oder Sie haben keine Erlaubnis auf diese Seite zuzugreifen.

Ohne .htaccess gibts keinen Stess, aber dann kann sich ja jeder die pdf-files anschauen!
Die download.php und htaccess liegen im selben Verzeichnis wie die pdf-files ->www.xyz.de/blabla/PDF/

Wenn ich die download.php in ein anderes Verzeichnis kopiere, dann findet er die pdf-datei nicht mehr, obwohl ich den Pfad angepasst habe!

Jemand ne Idee?

Geändert von vindiesel (29-06-2005 um 10:45 Uhr)
Mit Zitat antworten
  #11 (permalink)  
Alt 29-06-2005, 11:30
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.481
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Ein / vor download.php in der .htaccess und er sucht www.xyz.de/download.php, ein /blabla/download.php und er sucht www.xyz.de/blabla/download.php, ganz ohne / sucht er im aktuellen Verzeichnis.
Mit Zitat antworten
  #12 (permalink)  
Alt 29-06-2005, 13:46
vindiesel
 Newbie
Links : Onlinestatus : vindiesel ist offline
Registriert seit: Jun 2005
Beiträge: 20
vindiesel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Funzt leider irgendwie nicht!

Ich poste jetzt mal die Inhalte der einzelnen Dateien:

*********************************************
Inhalt download.php
Zitat:
<?php
//start the session
session_start();

//check to make sure the session variable is registered
if(!isset($_SESSION["username"])): header("Location: login.html"); endif;

// Hier werden die Parameter für das Einloggen in die Datenbank festgelegt
include "datenbank.inc.php";

//Die Verbindung zur Datenbank herstellen

$db = pg_connect("host=$dbHost port=$port dbname=$dbName user=$dbUser password=$dbPass") or die ("Die Verbindung zur Datenbank konnte nicht hergestellt werden!");

$query = "SELECT * FROM users WHERE username='$username';";
$result = pg_Exec($db, $query);
$row1 = pg_Fetch_Row($result);

//Die User-ID herausfinden
$anfrage2 = "SELECT user_id FROM users WHERE username='$username';";
$result2 = pg_exec($db, $anfrage2);
$row = pg_Fetch_Row($result2);
$id = $row[0];

$anfrage = "SELECT * FROM zugriffsrechte WHERE user_id='$id';";
$ergebnis = pg_Exec($db, $anfrage);
$row2 = pg_Fetch_Row($ergebnis);

pg_close($db);

if ($row2[7] == 1)
{
$dateiname = $_GET['pdf'];

if(file_exists($dateiname))
{
header("Content-type: application/pdf");
header("Content-Disposition: attachment; filename=\"$dateiname\"");
readfile($dateiname);
}

else
{
echo "DIE DATEI $dateiname IST NICHT VORHANDEN!";
}


}
else
echo 'KEINE BERECHTIGUNG!';

?>
***********************************************

Inhalt .htaccess

Zitat:
RewriteEngine On

#Alle Anfragen fuer .pdf Dateien wird an download.php umgeleitet
RewriteRule ^(.+\.pdf)$ download.php?pdf=$1
***********************************************

Inhalt drucken.php
<a href="../../download.php?pdf=modul_1.pdf" target="_new">KLICK MICH</a>

***********************************************

Position der einzelnen Dateien:

download.php -> http://www.xyz.de/blabla/
.htaccess -> http://www.xyz.de/blabla/PDF/
pdf-files -> http://www.xyz.de/blabla/PDF/
drucken.php -> http://www.xyz.de/blabla/Navigation/Drucken/
Mit Zitat antworten
  #13 (permalink)  
Alt 29-06-2005, 14:56
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.481
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Zitat:
download.php -> http://www.xyz.de/blabla/
.htaccess -> http://www.xyz.de/blabla/PDF/
Wenn die .htaccess greift, dann weil ein Zugriff auf 'ihr' Verzeichnis erfolgen soll, zum Beispiel auf irgendein.pdf.
Die RewriteRule schreibt den Request nun um auf eine download.php IM SELBEN VERZEICHNIS, also auf http://www.xyz.de/blabla/PDF/download.php! Das ist falsch.

Machs so:
RewriteRule ^(.+\.pdf)$ http://www.xyz.de/blabla/download.php?pdf=$1
Mit Zitat antworten
  #14 (permalink)  
Alt 29-06-2005, 15:02
vindiesel
 Newbie
Links : Onlinestatus : vindiesel ist offline
Registriert seit: Jun 2005
Beiträge: 20
vindiesel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ok, habs nun geändert!
Beim Aufruf der pdf-datei über den Link der drucken.php kommt jedesmal folgende Meldung:

DIE DATEI modul_1.pdf IST NICHT VORHANDEN!

Wieso findet er die Datei nicht?

Geändert von vindiesel (29-06-2005 um 15:04 Uhr)
Mit Zitat antworten
  #15 (permalink)  
Alt 29-06-2005, 15:44
ExInfernis
 Junior Member
Links : Onlinestatus : ExInfernis ist offline
Registriert seit: Jan 2004
Ort: Berlin
Beiträge: 213
ExInfernis ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Probier mal statt ../../drucken ... den absoluten Pfad anzugeben!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

MariaDB 5.5 veröffentlicht
MariaDB 5.5 veröffentlichtDie freie MySQL-Alternative MariaDB wurde in der stabilen Version 5.5.23 veröffentlicht und soll einige Verbesserungen gegenüber Oracles Communityversion von MySQL mitbringen.

16.04.2012 | Berni

Deutsche Yii Framework Community
Deutsche Yii Framework CommunitySeit dem 19.03.2012 gibt es für die Yii PHP Framework Community ein deutsches Zuhause.

20.03.2012 | dhcomputer

 

Aktuelle PHP Scripte

Advanced Login ansehen Advanced Login

Login-System und Kundenverwaltung, die sich spielend leicht in bestehende Webseiten einbauen lässt und einen enormen Funktionsumfang bietet. Ihre eigene Webseite muss mit Advanced Login nicht umständlich an ein fertiges System angepasst werden.

25.05.2012 Madden | Kategorie: PHP/ Kundenverwaltung
BROM CMS/BelCal 3 ansehen BROM CMS/BelCal 3

Spezielles CMS für Betreiber von Ferienwohnungen. Komplette Seitenerstellung online, Verwaltung mehrerer Objekte, Reservierungssystem mit sofortigem Abgleich im Belegungskalender und vieles mehr bietet dieses Content Management System.

25.05.2012 belcal2 | Kategorie: PHP/ CMS
belbit LiveSupport Script ansehen belbit LiveSupport Script

Schnellen und unkomplizierten Support im LiveSupport-Chat anbieten. Ohne Datenbank und in wenigen Sekunden installiert.

24.05.2012 EichbaumMedia | Kategorie: PHP/ Chat
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 09:01 Uhr.