Steuern Sie den Zugriff auf Dateien basierend auf DB-Werten mit PHP / Apache

8

Was ich will

Ich mache ein System, wo, wenn ein Benutzer ein Bild hochlädt, es in den Ordner images geht, wo es zwei Kopien des Bildes gibt, einen Daumen und einen größeren.

Jetzt, wenn ein Benutzer ein Bild hochlädt, geschieht dies neben dem Einfügen einer Zeile in eine MySQL-Datenbank, wo das Bild eine ID erhält und die Zeile einen Wert enthält, der festlegt, ob die Bilder der Öffentlichkeit zugänglich sind oder nicht (1 für nur Daumen verfügbar, 2 für beide) zusammen mit dem Besitzer (Admin) des Bildes.

Was ich tun möchte, ist, wenn ein Benutzer versucht, das Bild zu erreichen, indem er zur URL des Bildes geht, und der Wert in der Datenbank sagt, dass er nicht öffentlich verfügbar sein sollte und die Sitzung dieses Benutzers nicht der Besitzer des Bildes, (Admin nicht angemeldet) sollte entweder Bild nicht gefunden oder Zugriff verweigert sagen.

Was ich mir vorstelle

Wenn es mit PHP gemacht werden könnte, stelle ich mir so etwas vor:

%Vor%

Ich könnte vielleicht die Bilder in einem .htaccess-geschützten Ordner verstecken, eine imgae_get.php machen, die URL-Variablen akzeptiert, sieht, ob das Bild verfügbar ist, und das Bild laden, falls dies der Fall ist. Ich möchte nur vermeiden, das Bild und andere Server-Stromverbrauchsprozesse neu kompilieren zu müssen.

Meine Frage ist, kann ich das Bild so kontrollieren? Gibt es eine Möglichkeit, ein PHP-Skript als intern geladenes Bild erscheinen zu lassen? Oder gibt es vielleicht einen anderen / besseren Weg als durch PHP? (Apache vielleicht?) Irgendwelche Vorschläge werden sehr geschätzt.

    
Kristoffer la Cour 17.05.2011, 12:26
quelle

4 Antworten

4
%Vor%     
Explosion Pills 17.05.2011, 12:43
quelle
3

Sie können alle Anfragen für bestimmte Dateitypen (oder Dateinamen, alles, was Sie neu schreiben können) mit einer '.htaccess' Datei in Ihrem DocumentRoot :

umleiten %Vor%

Sie können die ursprüngliche Anfrage aus dem $_SERVER superglobal ermitteln und die entsprechenden Header verwenden, um den Browser darauf aufmerksam zu machen, dass Sie ein Bild zurückgeben. Dann lesen Sie das Bild von der Festplatte (mit file_get_contents() oder ähnlich) und schreiben es in den Browser mit echo , genauso wie Sie HTML ausgeben würden.

    
Andy 17.05.2011 12:46
quelle
2

.htaccess

%Vor%

HTML

%Vor%

PHP (image.php)

%Vor%     
Lawrence Cherone 17.05.2011 13:05
quelle
0

"mod_rewrite" alle Versuche, über einen gefälschten Pfadnamen auf eine PHP-Datei mit dem Bilddateinamen als Abfrageparameter zuzugreifen und dann dort zu basteln. Das Speichern der Bilder außerhalb des Öffentlichen Ordners sollte unerwünschten öffentlichen Zugriff verhindern. Speichern Sie alternativ das eigentliche Bild in der DB selbst.

    
Ariana Carter-Weir 17.05.2011 12:49
quelle

Tags und Links