Zum Inhalt springen

PHP: Zugriff auf Dateien nur aus Script erlauben


Empfohlene Beiträge

Moin,

heute hätte ich mal eine Frage.

Auf einem Webserver liegen in Unterverzeichnissen Dateien, im speziellen Bilder und PDF, die aus Datenschutzgründen nicht für jeden sichtbar sein dürfen.

Nun gibt es einen Login, anhand dem ich erkennen kann, wer welche Datei sehen darf und wer nicht. Das muss auch möglich sein, klar.

Es darf aber nicht möglich sein, über die URL an die Daten heranzukommen, z.B. durch Eingabe von http://www.domain.tld/ordner/bild.jpg

Meine Idee war es, das Verzeichnis mit .htaccess zu schützen ("deny from all"). Dann geht das mit der URL auch korrekterweise nicht mehr, aber dann werden die Bilder auch im IMG-Tag nicht mehr angezeigt.

Wenn ich über das Dateisystem auf die Bilddatei zugreife, klappt das.

Wie müsste ich das machen, das statt <IMG src='ordner/bild.jpg'> etwas wie

<IMG src='ShowPic.php?ordner/bild.jpg'> oder so ähnlich funktioniert, ich also in ShowPic.php eine Schnittstelle zur Verfügung stelle.

Hat jemand eine Idee? Oder sogar einen Codeschnipsel bzw. ein flaches Beispiel? Das wäre echt prima, ich komme nämlich nicht mehr weiter.

Danke im Voraus.

Reinhold

Link zu diesem Kommentar
Auf anderen Seiten teilen

Moin,

und Danke für die Antwort.

deutlich oversized, aber einfach zu benutzen

Das sieht erstmal gut und umfangreich aus, aber leider, wie du selber sagst, TOTAL mit der Panzerfaust auf den Spatz geschossen :)

und mit vielen zusatzmöglichkeiten:

phpThumb() - The PHP thumbnail generator

Möglichkeiten, die ich leider (jedenfalls momentan und auf die Schnelle) nicht benötige. Kannst du mir vielleicht die 3-5 Zeilen darin sagen, die ich brauchen würde.

Reinhold

Link zu diesem Kommentar
Auf anderen Seiten teilen

jupp :)

hier paket runterladen:

SourceForge.net: Files

auspacken, komplettes verzeichnis in dein projekt speichern, phpthumb.php aufrufen (edit: respektive bild-url angeben) mit:

phpthumb.php?src=deinbild.jpg

wenn du keine anpassungen in der config machen willst, musst du das bild aus der sicht der phpthumb.php referenzieren.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hatte das Problem auch mal ;)

Vereinfacht:


// download.php: Gibt Bilder für alle, andere Dateien jedoch nur für angemeldete Benutzer zurück

// Weder berechtigter User, noch Bilddatei? Raus
if (!$korrektEingeloggt && !fileHasExtension($angeforderteDatei, array("jpg","png","gif","jpeg","bmp","tif","tiff","svg","ico"))
header("location:index.php");

// Datei ausliefern
else {
...
}

// gibt true zurück, wenn die übergebene Datei auf eine der übergebenen Extension endet
function fileHasExtension($filename, $extensions) {
foreach ($extensions as $ext) {
if (strtolower(substr($filename, strlen($filename)-(strlen($ext)+1), strlen($ext)+1)) == ".".strtolower($ext))
return true;
}
else
return false;
}
}[/PHP]

Dann werden Bilder per <img src="download.php?file=foo.jpg" /> auch denen angezeigt, an die sonst keine Dateien ausgeliefert werden dürfen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

...die Funktion fileHasExtension falsch "zusammengekürzt" -.-

Auf ein Neues:

// gibt true zurück, wenn die übergebene Datei auf eine der übergebenen Extensions endet
function fileHasExtension($filename, $extensions) {
foreach ($extensions as $ext) {
if (strtolower(substr($filename, strlen($filename)-(strlen($ext)+1), strlen($ext)+1)) == ".".strtolower($ext))
return true;
}
return false;
}[/PHP]

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...