Bild einbinden in cgi skript


kapfe89

Mitglied
Hallo zusammen,

ich hoffe mir kann jemand weiterhelfen. Ich versuche eine einfache Bildershow mit perl also cgi skript zu machen.

Hier mein Code:

PHP:
print "Content-type: text/html\n\n";

$param_string =  $ENV{'QUERY_STRING'};

foreach my $x ( split /&/, $param_string ) {
     my ($name, $value) = split /=/, $x;
     $para{$name} = $value;
 }

print $para{'image'};
$image = $para{'image'};


$next = $image + 1;
$back = $image - 1;
if ($back <= 0) {$back = 1};
if ($next >= 5) {$next = 5};

print "<a href='/cgi-bin/printenv?image=$back'>Zurück</a>";
print "<img src='1.jpg' />";
print "<a href='/cgi-bin/printenv?image=$next'>Nächstes</a>";

Also ganz einfach, variable image auslesen, und dann das Bild anzeigen.
Es funktioniert auch alles, nur das Bild wird nicht angezeigt. In Firebug bekomme ich für das Bild einen 500er Fehler angezeigt. Dass Bild ist jedoch erreichbar, hat auch die nötigen Rechte (nobody:nogroup , 777).

Woran könnte das liegen?

Grüße,
Martin
 

Dr Dau

ich wisch hier durch
Hallo!

Scheinbar müssen die Bilder ausserhalb vom cgi-bin liegen (zumindest funktioniert es dann unter Windows).
Allerdings musst Du Deinem Script auch noch sagen welches Bild angezeigt werden soll (zur Zeit lässt Du ja nur 1.jpg anzeigen).
Damit das 1. Bild aber auch angezeigt wird ohne auf einen der Links zu klicken, genügt eine if-Abfrage (Voraussetzung ist dass die Bildnummer erst bei 1 beginnt ;)).

Angenommen das Script heisst "showimage.pl" und liegt im cgi-bin, und die Bilder liegen in "http://www.deine-domain.de/bilder/", dann könnte das Script so aussehen:
PHP:
print "Content-type: text/html\n\n";

$param_string =  $ENV{'QUERY_STRING'};

foreach my $x ( split /&/, $param_string ) {
     my ($name, $value) = split /=/, $x;
     $para{$name} = $value;
 }

if($para{'image'} < 1) {
    $para{'image'} = 1;
}

print $para{'image'};
$image = $para{'image'};


$next = $image + 1;
$back = $image - 1;
if ($back <= 0) {$back = 1};
if ($next >= 5) {$next = 5};

print "<a href='bild.pl?image=$back'>Zurück</a>";
print "<img src='../bilder/$image.jpg' />";
print "<a href='bild.pl?image=$next'>Nächstes</a>";
Funktioniert bei mir wunderbar. ;)

Wenn Du nicht willst dass der Verzeichnisinhalt von "bilder" angezeigt werden kann, dann packe dort noch eine .htaccess mit diesem Inhalt rein:
Code:
Options -Indexes
Gruss Dr Dau