anaboe.net

Einbinden eines Perlscripts als Grafikressource

Zielstellung

Sie möchten in einer HTML-Datei eine Grafik einbinden, die von einem Perlscript ausgegeben wird, z.B. um durch eine Referrerprüfung Trafficklau vorzubeugen.

Perl - Code

#!/usr/bin/perl
use strict;
use CGI::Carp qw(fatalsToBrowser);
use CGI qw(param);

#Pfad zu den Grafiken
my $img_dir = "../images/";

# Ueberpruefen des Scriptparameters
# 'num' darf nur aus 2 Ziffern bestehen
if(param('num') =~ /^\d{2}$/) {
  print_image(param('num'));
}
else {
  print_image("ersatzbild.jpg");
}

sub print_image {
  my $buf;
  # zusammensetzen des Pfades zum Bild
  # Beispiel: ../images/bild15.jpg
  my $bild = $img_dir."bild".$_[0].".jpg";
  print "Content-type: image/jpeg\n\n";
  open(IMG, "<$bild") or die $!;
  binmode(IMG);
  while(read IMG,$buf,8192)
  {
    print $buf;
  }
  close IMG;
}

HTML-Code

<img src="./cgi-bin/bildausgabe.pl?num=15">

Erläuterungen

Das Script erhält die Bildnummer als Parameter und setzt daraus den Pfad zum Bild zusammen. Auf eine Existenzprüfung wurde aus Gründen der Übersichtlichkeit verzichtet, Sie sollten dies bei Bedarf noch ergänzen. Das Bild wird im Binärmodus geöffnet, ausgelesen, und unter Angabe des für das verwendete Grafikformat zulässigen MIME-Typen an STDOUT geschrieben.