Umleitungsscript in Perl

von Thomas Salvador.

Hier möchte ich Ihnen ein kurzes CGI in Perl in die Hand geben. Erst der Source, dann etwas zum Sinn eines solchen Scriptes.

Der Source

#!/usr/local/bin/perl ## <- Pfad zum Perl-Interpreter

## redirect - Umleitung
##
## (c) 1999 Thomas Salvador fuer den WebDesign-Newsletter und brauchbar.de
##     https://brauchbar.de
##     Alle Rechte vorbehalten.
##
## Beliebige Nutzung ist erlaubt, *solange* diese Copyrightmeldung
## unveraendert und vollstaendig enthalten bleibt. Jegliche Nutzung
## mit veraenderter oder entfernter Meldung ist untersagt.
## Sie nutzen das Script auf eigene Gefahr.

   print "Location: ", $ENV{'QUERY_STRING'}, "\n\n";

## end-of-source

Im Prinzip ein Einzeiler.

Die Copyright-Meldung ist länger als das eigentliche Programm .. nicht schlecht.

Wie funktioniert es?

Wir wollen das Programm in der Form

https://irgendwas.erde/cgi-bin/redirect.pl?url

aufrufen.

Das ist die Requestmethod get, bei der (etwaige) Parameter in der Umgebungsvariable QUERY_STRING geliefert werden.

Da wir nur einen Parameter haben und diesen nicht einmal aufbereiten müssen, wird der Wert direkt ausgegeben.

Der Browser erhält auf unsere obige Bespielanfrage also die Antwort (Hinweis: \n ist die maskierte Form von "Neue Zeile")

Location: url

was ihm sagt, dass er die Adresse url öffnen soll.

Schon haben wir unsere Umleitung.

Was soll es?

Es stellt sich nun natürlich die Frage, was das Ganze soll? Welchen Sinn hat es, anstelle von zum Beispiel:

<a href="https://www.google.com">nach Google</a>

zu schreiben

<a href="https://irgendwas.erde/cgi-bin/redirect.pl?https://www.google.com">nach Google</a>

In der ersten Form verlässt der Besucher Ihre Site, ohne dass Sie es merken. In der zweiten Form jedoch stellen Sie es fest, denn der Aufruf des CGI wird natürlich in Ihren Logfiles vermerkt.

Das ist der eigentliche Unterschied. Der Referer-Eintrag im Logfile sagt Ihnen sogar noch, von welcher Seite aus Ihr Besucher das CGI aufgerufen hat!

Das erlaubt ein einfaches Zähen, welcher Link wie oft genutzt wurde.

Installation von CGIs in Perl

Es gibt zwei wesentliche Dinge, die Sie bei der Installation von Perl-Scripten beachten müssen.

Zum einen muss das Script per FTP im ASCII-Modus auf Ihren Account übermittelt werden. Binär übertragen, wird es nicht funktionieren.

Zum anderen die Rechte. Während compilierte CGIs für der WebServer ausführbar sind, sobald sie für alle ausführbar sind, müssen Scripte zusätzlich auch für jedermann betrachtbar sein, da der Perl-Interpreter das Script zum Lesen öffnen können muss.

D.h. geeignete Rechte für ein Perl-Script sind zum Beispiel rwxr-xr-x (755).

Um die Rechte anzupassen, bauen Sie eine telnet-Verbindung zu Ihrem Account auf, wechseln dort in das Verzeichnis, in dem das Script gespeichert ist und sagen z.B.:

chmod 755 redirect.pl

Wenn Sie keinen telnet-fähigen Account haben, verwenden Sie einfach ein entsprechenden FTP-Client. Zum Beispiel Leech FTP (Freeware von Jan Debis) und WS_FTP können das. Leider unterstützen dies scheinbar wieder nicht alle FTP-Zugänge.

Bei manchen Providern oder Free-Hostern werden die Rechte von .pl und .cgi Dateien automatisch auf 755 gesetzt.

Eines ist klar: haben Sie die Möglichkeit, eigene CGIs zu installieren, so haben Sie auch irgendeine Möglichkeit, Rechte zu setzen. Fragt sich nur, welche.

Treten also Probleme auf, konsultieren Sie bitte Ihren Admin.

Nun viel Spaß.