Mit htaccess und mod_rewrite session check ?
Chris
- sonstiges
Hallo zusammen,
ich bastell im Moment an einer Webseite bei der die User Fotos auf den Server laden können und suche nach einer Möglichkeit die Bilder vor unbefugtem Zugriff zu schützen.
Dazu ist zu sagen das sich alle User erst Registrieren müssen um die Webseite benutzen zu können.
Meine Gedanken:
Ich lege eine .htaccess an:
RewriteEngine On
RewriteRule ^img/userpics/(.*)/(.*)$ chk_session.php?id=$1&pic=$2
Dadurch werden alle Aufrufe die in den Ordner wo die Bilder liegen abgefangen und an das PHP-Script weitergeleitet welches die Berechtigung prüft.
Das Script soll dann bei Erfolg zum Bild leiten, wenn ich jetzt aber mittels header() wieder in den Ordner "img/userpics/" leite fängt das ganze Spiel wieder von vorne an und ich habe eine Endlosschleife ;-)
Nun meine Fragen:
Gibt es einen Weg die Htaccess nur einmal zu starten ?
Oder gibt es eine andere Technick zum tatsächlichen Bild weiterzuleiten als header() ? ( evtl. Bild einlesen und mittels print() ausgeben ? )
Oder kann man vieleicht das Bild irgendwie in die Datei chk
_session.php includen um so die .htaccess zu umgehen ?
Oder vieleicht eine andere Möglichkeit die ich nicht bedacht habe ?
Danke für jeden Tipp und viele Grüße,
Chris
Wenn du das Bild bei Zugriff zum Download anbieten willst, schau dir folgendes Script an:
<?php
if(chk_session()==FALSE) // session-check-funktion gibt FALSE zurueck
{
die(); // oder per header() auf Error-Page oder sonstwohin weiterleiten
}
else // zugriff erlaubt, liefere bild zum download
{
$bild = "/pfad/bild.jpg";
header("Content-Description: File Transfer");
header("Content-Type: application/force-download");
header("Content-Length: ".filesize($bild));
header("Content-Disposition: attachment; filename=".basename($bild));
@readfile($bild);
}
?>
Wenn du entsprechend per mod_rewrite alle Requests auf dieses Script weiterleitest, sollte der von dir gewuenschte Effekt erreicht werden.