#!/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-Header 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-Header 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);
   }
