Um zu verhindern, dass Bilder eigene direkt von anderen eingebunden werden , gibt es zwei Möglichkeiten:
Die erste ist ein PHP-Script welches das Bild lädt, den REFRER überprüft und ggf. noch ein Wasserzeichen zu dem Bild hinzufügtden und wieder ausgibt ausgibt.
Der Code kann etwa so aussehen:
function href_ok() {
$domain_array = Array();
$domain_array[] = 'meinedomain.de';
return in_array($_SERVER['HTTP_REFERER'], $domain_array[]);
}
header('Content-Type: image/jpeg');
$uri = getenv('REQUEST_URI');
$urix = explode('/', $uri);
$img_path = "images/{$_GET['fname']}.jpg";
$imagesrc = imagecreatefromjpeg($img_path);
if(!href_ok()) {
$water_mark = ImageCreateFromPNG('images/photos/wasserzeichen.png');
ImageCopy($imagesrc, $water_mark, imagesx($imagesrc) - imagesx($water_mark), imagesy($imagesrc) - imagesy($water_mark), 0, 0, imagesx($water_mark), imagesy($water_mark));
}
imagejpeg($imagesrc);
imagedestroy($imagesrc);
Um das Script wirklich produktiv einsetzen zu können, sind aber noch ein paar Anpassungen nötig.
Im Beispiel müsste u.a. die imagecreatefromjpeg und imagejpeg je nach Bildformat angepasst werden (imagecreatefromgif, imagecreatefrompng…).
Außerdem sollte der Bilder Pfad nicht allzu leicht zu erraten sein (z.B. nicht /images) oder am besten in einem Verzeichnis außerhalb des Webservers liegen.
Alternativ kann man auch mod_rewrite einsetzen, sollte zumindest Performance technisch schneller unterwegs sein.
Vorraussetzung für die Funktion ist ein Apache Webserver mit mod_rewrite aktiviert (leider bieten diesen Service nicht allzu viele Webhoster).
Um bei einer Fremdverlinkung ein anderes Bild anzuzeigen, ist die .htaccess Datei wie folgt zu ändern:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www.)?domain.de(/.*)?$ [NC]
RewriteRule .(gif|jpg|png|jpeg|GIF|JPG|PNG|JPEG)$ http://www.example.org/ersatzbild.jpg [R,L]
Die dritte Zeile muss natürlich auf die eigene Domain angepasst werden.
Das ersatzbild.jpg kann auch wiederrum ein einfaches PHP-Script sein, welches das Bild lädt, ein Wasserzeichen hinzufügt und wieder ausgibt.
Um gar kein Bild anzuzeigen (spart Traffic), ist die letzte Zeile durch
RewriteRule .(gif|jpg|png|jpeg|GIF|JPG|PNG|JPEG)$ - [F]
zu ersetzen.