Archiv für den Monat August 2012

I shoot …

Freitag, 24. August 2012

Eigentlich heißt es ja von Jarid PolinI Shoot RAW„. Aber irgendwie find ich als Nikon User „I shoot .NEF“ passender. (Wikipedia) Also hab ich mir schon wieder ein T-Shirt (bei Spreadshirt) bestellt! Das werd‘ ich sicher beim nächsten Photo-Shooting anziehen…

Zahlenspiele

Dienstag, 21. August 2012

Die Tage kam auf 3sat ein interessanter Beitrag über den Beweis von Fermats Vermutung, dass die Gleichung a^n+b^n=c^n für a, b, c, n \in \mathbb{N} keine Lösung für n>2 hat. Auch bekannt als „Großer fermatscher Satz„. Der Mathematiker Andrew Wiles hat Anfang der 90er Jahre nach acht jähriger Arbeit den Beweis erbringen können, dass die Vermutung richtig sei. Ich hatte in der Reha letztes Jahr schon das Buch „Fermats letzter Satz: Die abenteuerliche Geschichte eines mathematischen Rätsels“ von Simon Singh gelesen und fand es nun sehr spannend mal die Gesichter der Protagonisten zu sehen. Sonja hingegen war total gelangweilt, hat nichts verstanden (obwohl eigentlich gar keine Formeln vor kamen) und irritiert für was man so etwas und Mathematik abseits der vier Grundrechenarten überhaupt benötigt.
Mich hingegen fasziniert das schon, auch wenn ich natürlich auch keine Ahnung von höherer Mathematik habe.

Zufällig bin ich vor kurzem auf den schönen Youtube Kanal Numberphile gestoßen, in dem einige mathematische Dinge angesprochen und schön erklärt werden. Ist zwar auf englisch, aber recht leicht verständlich.

Außerdem wollte ich mal LaTeX für WordPress ausprobieren. Das Jetpack Plugin bietet das ja mit Beautiful Math an. Zwar bin ich absoluter Anfänger was dieses mächtige Tool angeht, aber schnell stellte sich heraus, dass es zu wenig kann. Also habe ich mich kurz umgeschaut und das PlugIn WP QuickLaTeX gefunden, das viel mächtiger ist und auf dieser Seite eingesetz wird.

Hier ein kleines Rätsel für mathebegeisterte Leser

Verknüpfe die drei Zahlen jeweils so mit mathematischen Symbolen, dass die Gleichung stimmt und sechs herauskommt.

    \begin{eqnarray*} 0\quad0\quad0&=&6\\ 1\quad1\quad1&=&6\\ 2\quad2\quad2&=&6\\ 3\quad3\quad3&=&6\\ 4\quad4\quad4&=&6\\ 5\quad5\quad5&=&6\\ 6\quad6\quad6&=&6\\ 7\quad7\quad7&=&6\\ 8\quad8\quad8&=&6\\ 9\quad9\quad9&=&6\\ \end{eqnarray*}

Beispiel:

    \begin{eqnarray*} 2+2+2&=&6\\ \end{eqnarray*}

Viel Spaß beim knoblen!

p.s.: Sonja meint, dass ich der einzige wäre, der so etwas interessant findet…

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…

URL dieser Seite: http://inmemoriam.novacorps.com/2012/08/passwortschutz-fuer-bilder/
Dieser Artikel wurde am Montag, 13. August 2012 um 20:16 Uhr erstellt.
Sofern nicht anders angegeben, steht der Inhalt unter einer „Namensnennung-Keine kommerzielle Nutzung-Keine Bearbeitung 3.0 Deutschland“ Lizenz.