Mit ‘Plugin’ getaggte Artikel

Umstieg von Lightbox auf Fancybox

Freitag, 21. Juni 2013

Tobias PigullaDas Javascript Lightbox2 zur Anzeige der Bilder hat mir bisher gute Dienste geleistet und hat zuverlässig funktioniert. Ich suchte aber schon seit langem ein besseres. U.a. damit ich größere Bilder hoch laden kann, die auf Monitoren mit hoher Auflösung entsprechend groß und auf solchen mit niedrigerer entsprechend verkleinert dargestellt werden. Durch Zufall stieß ich nun auf Fancybox als Alternative, das außerdem nicht mehr mit Scriptaculous sondern jQuery arbeitet. Und diese passt die Bilder bei der Anzeige an die Fenstergröße an. Yeah! Bei dem Bild hier könnt ihr es sehen. Es ist 1996 × 3000 Pixel groß und passt damit wohl auf die wenigste Bildschirme komplett drauf.
Nach ein paar kleinen Anpassungen1 läuft also nun dieses Script auf meiner Homepage und die Bilder werden in Zukunft besser aufgelöst abgespeichert.

  1. Ich habe es so angepasst, dass man bei mehrseitigen NextGen Galerien beim letzten Bild jeder Seite, beim Weiterklicken automatisch auf die nächste Seite kommtj und das dortige erste Bild groß in der Fancybox angezeigt bekommt. Natürlich funktioniert das auch beim Rückwärtsblättern.

Passwortschutz für Bilder

Montag, 13. August 2012

Weil es doch immer wichtiger wird zu kontrollieren wer im Internet Bilder sehen darf und wer nicht kann man Inhalte in WordPress recht einfach mit einem Passwort schützen.
Ich nutze das beliebte NextGen Gallery PlugIn für WordPress. Dabei bleibt aber leider das Problem, dass der direkte Link zu dem Bild weiterhin ohne Schutz ist. Eigentlich ist das kein so großes Problem, da ich ja nichts verbotenes online stelle und man den Link zum Bild erraten müsste, aber irgendwie unbefriedigend ist es schon. Denn die Pfade und Bildnamen sind jetzt nicht so kompliziert.
Also habe ich mal geschaut, was es da so für Möglichkeiten schon gibt, habe aber auf die Schnelle nichts gefunden und bevor ich viel weiter suche, programmiere ich mir halt selbst schnell was zusammen.

Um die Bilder zu schützen dürfen sie nicht direkt ausgeliefert werden. Daher habe ich eine .htaccess Datei einmal in den Nextgen Ordner mit den Bilder-Subfoldern und einmal in das Uploads Verzeichnis gelegt, der per mod_rewrite bei Aufruf einer .jpg Datei auf eine PHP umleitet.

.htaccess
<FilesMatch "\.(jpg|jpe?g)$">
    RewriteEngine on
    RewriteCond %{REQUEST_URI} !.*/thumbs/.*
    RewriteRule (.*) /image.php?i=%{REQUEST_URI} [R]
</FilesMatch>

Die Nextgen Thumbs habe ich jedoch ausgeschlossen, da die auch ohne Passworteingabe angezeigt werden müssen.
Die PHP Datei image.php im Root empfängt den Bild-Pfad und prüft nun die Rechte.

  • Ist das Bild in der Nextgen Datenbank hinterlegt?
  • Ist es von der Anzeige ausgeschlossen?
  • Gehört es zu einer Passwort-geschützen Nextgen Gallery Seite?
  • Ist das richtige Passwort gesetzt?

Wenn das Bild nicht zu einer Galerie gehört…

  • Ist das Original-/Vollbild ein Anhang zu einer geschützten Seite?
  • Ist das Passwort gesetzt?

Die Vorschaubilder und Bilder die zu keiner Seite gehören sind davon ausgenommen und werden direkt angezeigt.
Wenn das Bild nicht ausgeliefert werden darf wird ein transparentes 1×1 Pixel PNG ausgeliefert.

image.php
<?php
require_once($_SERVER['DOCUMENT_ROOT'].'/wp-config.php');
$pathinfo = pathinfo($_GET['i']);
if ($pathinfo['extension'] == 'jpg'){
  $path = $pathinfo['dirname'];
  $file = $pathinfo['basename'];
  $filename = $pathinfo['filename'];
  if (file_exists($_SERVER['DOCUMENT_ROOT'].$path.'/'.$file)){
    $gallery_row = $wpdb->get_row($wpdb->prepare("SELECT gid, pageid FROM " . $table_prefix . "ngg_gallery WHERE path = %s ", substr($path, 1)));    
    $gid = $gallery_row->gid;    
    $pageid = $gallery_row->pageid;    
    if($pageid > 0){
      $pic_row = $wpdb->get_row($wpdb->prepare("SELECT pid, COUNT(*) AS 'counter' FROM " . $table_prefix . "ngg_pictures WHERE galleryid = %s AND filename = %s AND exclude = 0", $gid, $file));
      $pid = $pic_row->pid;    
      $filecount = $wpdb->get_var($query);  
      if($filecount > 0){
        $thispost = get_post($pageid); 
        if (!post_password_required($pageid)){
          deliverImage($path, $file);
        }
      } 
    } else {
      $pageid = $wpdb->get_var($wpdb->prepare("SELECT post_parent FROM " . $table_prefix . "posts WHERE post_type = 'attachment' AND post_mime_type = 'image/jpeg' AND post_name = %s ", $filename));    
      if($pageid > 0){
        $thispost = get_post($pageid); 
        if (!post_password_required($pageid)){
          deliverImage($path, $file);
        }
      } else {
        deliverImage($path, $file);
      }
    }
  }
}
header('Content-disposition: inline; filename="_.png"');
header('Content-transfer-encoding: binary');  
header('Content-type: image/png');
$im = imagecreate(1, 1);
$white = ImageColorAllocate($im, 0xFF, 0xFF, 0xFF);
ImageFilledRectangle($im, 0, 0, 1, 1, $white);
imagecolortransparent($im, $white); 
ImagePng($im);
ImageDestroy($im);
exit();

function deliverImage($path, $file){
  header('Content-disposition: inline; filename="' . $file . '"');
  header('Content-transfer-encoding: binary');  
  header('Content-type: image/jpeg');
  readfile($_SERVER['DOCUMENT_ROOT'] . $path . '/' . $file);
  exit();
}
?>

Also eigentlich recht einfach und effektiv. Diese Funktionalität lässt sich natürlich recht einfach auf andere Dateitypen erweitern. Viel Spaß beim Nachbauen…

Datenerhebung

Donnerstag, 12. August 2010

Piwik für die Webstatistik

Google bietet mit seinem Tool Analytics schon recht gute Möglichkeiten die Besucher der Webseite nicht nur zu zählen sondern auch ein paar andere interessante Statistische Daten aus zu werten. Leider werden diese Daten aber bei Google gespeichert und man hat keine Kontrolle über die Verwendung, auch wenn ich nicht gerade paranoid bin was das angeht. (Vielleicht kann man auch blauäugig sagen…)

Letztens bin ich auf einen Artikel auf golem.de gestoßen, in dem die Open-Source Webanalyse-Software Piwik vorgestellt wurde. Da hier die Daten in der eigenen Datenbank gespeichert werden, hat man die volle Kontrolle.

Die Installation auf meinem Server dauerte nur ein paar Minuten und war problemlos. Das WP-Piwik Plugin ist ebenfalls schnell installiert.

Nun trackt Piwik (neben dem Google Tool) u.a. diese Seite und ich bin gespannt, wie sich die Daten entwickeln werden.

URL dieser Seite: http://inmemoriam.novacorps.com/2010/08/datenerhebung/
Dieser Artikel wurde am Donnerstag, 12. August 2010 um 18:31 Uhr erstellt.
Sofern nicht anders angegeben, steht der Inhalt unter einer „Namensnennung-Keine kommerzielle Nutzung-Keine Bearbeitung 3.0 Deutschland“ Lizenz.