|
Bedingte Anweisungen mit if/unless/else/elsif
Einfache Entweder-Oder-Abfrage
#!/usr/bin/perl @Passwords = ("Piesepampel","Lederstrumpf","Hotzenplotz"); # Passwortliste # Einfaches CGI-Script fuer Passwortabfrage # # In der ersten unless-Abfrage wird geprueft, ob die Standard-Eingabe # # das Wort 'geheim' enthaelt. Ist das nicht der Fall, wird eine HTML- # # Datei mit einem kleinen Formular zur Passworteingabe erzeugt. Beim # # Absenden des Formulars wird wieder dieses Script aufgerufen. Da aber # # nun der Name des Formularfelds fuer das Passwort 'geheim' lautet, # # kommt das Script in den else-Zweig. Dort wird geprueft, ob das # # eingegebene Wort in der Passwortliste vorkommt. # read(STDIN, $Input, $ENV{'CONTENT_LENGTH'}); # Standard-Eingabe auslesen unless($Input =~ /geheim/) # Wenn 'geheim' darin nicht vorkommt... { print "Content-type: text/html\n\n"; # HTTP-Haeder fuer HTML-Datei print "<html><head><title>Passwort</title></head>\n"; # HTML-Datei print "<body bgcolor=#C0C0C0><h1>Passwort</h1>\n"; print "<form action=\"\\cgi-bin/test.pl\" method=post>\n"; print "<input type=password name=\"geheim\" maxlength=15 size=15>\n"; print "<input type=submit value=\"Absenden\">\n"; print "<input type=reset value=\"Abbrechen\">\n"; print "</form></body></html>\n"; exit(0); } else # wenn 'geheim' vorkommt... { print "Content-type: text/html\n\n"; # HTTP-Haeder fuer HTML-Datei print "<html><head><title>Passwort</title></head>\n"; # HTML-Datei print "<body bgcolor=#C0C0C0><h1>Passwort</h1>\n"; ($name, $value) = split(/=/, $Input); for(@Passwords) # Passwortliste abklappern { if($value eq $_) # Wenn eingegebener Wert gleich Passwort { $Erfolg = "ja"; last; # for-Schleife abbrechen } else # Wenn eingegebener Wert ungleich Passwort { $Erfolg = "nein"; } } if($Erfolg eq "ja") { print "<b>Eingeloggt!</b>\n"; # Hier kann z.B. ein Verweis zu einer geheimen URL folgen } else { print "<b>Sorry, Sie haben hier KEINEN Zutritt oder Ihr Passwort falsch eingegeben!</b>\n"; } print "</body></html>\n"; exit(0); } |
Eine andere Möglichkeit, um eine Wenn-Dann-Bedingung zu formulieren, steht mit unless zur Verfügung (unless = wenn nicht). Dabei gelten die gleichen Regeln wie bei if. Der Unterschied zu if besteht darin, daß bei unless nicht abgefragt wird, welche Bedingung erfüllt sein muß, damit der davon abhängige Programmcode ausgeführt wird, sondern welche Bedingung nicht erfüllt sein darf.
Wenn Sie mehrere Bedingungen in Reihe schalten wollen, sollten Sie für alle weiteren Bedingungen nach der ersten if/unless-Bedingung anstelle davon elsif verwenden (elsif = oder wenn).
Mit else definieren Sie den Zweig Ihrer Abfrage, der ausgeführt werden soll, wenn die Bedingungen von if, unless oder elsif nicht zutreffen (else = sonst). Wenn Sie für diesen Fall keine Anweisungen brauchen, lassen Sie den else-Zweig einfach weg.
#!/usr/bin/perl $Ergebnis = $ENV{'HTTP_USER_AGENT'} =~ /95/ ? "Win 95/NT" : "kein Win 95/NT"; print "Content-type: text/html\n\n"; print "<html><head><title>User</title></head>\n"; print "<body>\n"; print "<h1>Sie haben ", $Ergebnis, "!</h1>\n"; print "</body></html>\n"; exit(0); |
Blättern: | |||
Vordefinierte Variablen in Perl | Schleifen und Sprungbefehle |
HTML-Dateien selbst erstellen | |||
Dokumentation: CGI/Perl | |||
CGI und Perl: Perl Sprachelemente |
© 1997 Stefan Münz, s.muenz@euromail.com