Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

PHP: Zugriff auf Dateien nur aus Script erlauben

Empfohlene Antworten

Veröffentlicht

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

deutlich oversized, aber einfach zu benutzen und mit vielen zusatzmöglichkeiten:

phpThumb() - The PHP thumbnail generator

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

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.

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.

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.