#!/usr/bin/perl
#########################################################
# "randval.cgi"--perl CGI Skript zum generieren eines Zufallswerts.
# ---------------------------------------------------------
#
# Copyright (C) 1995, Alicia da Conceicao.
# Dieses Programm ist Freeware und kann von jedermann so lange frei
# genutzt, vertrieben und modifiziert werden, wie diese Nachricht
# vollstndig im Quellcode erscheint und kein Profit aus dem Pro-
# gramm gezogen wird. Jeder andere Verwendungszweck bedarf der
# schriftlichen Genehmigung der Autorin.
##########################################################
#
#********** GLOBALE VARIABLEN DEKLARIEREN
#
# "$hostName"     Ist der Internet Host-Name (oder IP-Nummer) des
#                 Host-Computers, auf dem sich das CGI-Skript
#                 befindet. ndern Sie ihn in Ihren Host-Namen um.
# "$scriptDir"    Wie von HTTP spezifiziert, ist dies das Verzeich-
#                 nis, in dem sich dieses CGI-Skript befindet.
#                 ndern Sie es Ihrem Verzeichnis entsprechend.
# "$scriptName"   Wie von HTTP spezifiziert, ist dies der Name
#                 dieses CGI-Skripts.
# "$scriptTitle"  Wird als Titel und berschrift der HTML-Ausgabe
#                 des Skripts verwendet.
# "$numValues"    Ist die Anzahl der mglichen Zufallswerte. Sie
#                 drfen seinen ursprnglichen Wert ndern, falls
#                 Sie die Bandbreite der mglichen Zufallswerte
#                 ndern wollen.
# "$num"          Ist die zufallsbedingt erzeugte Zahl
#                 zwischen 0 und ($numValues - 1).

$hostName = "ihr.host.name";
$scriptDir = "/skript/verzeichnis";
$scriptName = $hostName.$scriptDir."/randval.cgi";
$scriptTitle = "Zufallswert";
$numValues = 100;
$num;

# *********** ANFANG HAUPTPROGRAMM

&randomValue (); # Rufe Unterprogramm randomValue auf

#***** Hier ist das Ausgabe-Ergebnis fr HTML

print STDOUT "Content-type: text/html\n\n",
      "<html><head><title>", $scriptTitle, "</title></head><body>\n",
      "<h1>", $scriptTitle, "</h1>\n",
      "<p>Hier ist ein Zufallswert zwischen 0 und ", ($numValues - 1),
      ": <b>", $num, "</b>,</p>\n",
      "<form method=\"post\" action=\"http://", $scriptName, "\">\n",
      "<input type=\"hidden\" name=\"uniqueIndex\" value=\"", time, "-", $$,
      "\">\n",
      "<P><input type=\"submit\" value=\"Ein weiterer\"> Zufallswert?</p>\n",
      "</form></body></html>\n";

#############################################################
# Beachten: Das Ergebnis des Skripts ist eine Ausgabe als HTML,
# insbesonders fr ein Form, das dem Skript erlaubt sich selbst
# aufzurufen. Die Form enthlt einen versteckten Wert "uniqueIndex".
# Der verwendete Wert besteht aus der Anzahl der Sekunden, die seit 
# dem Jahr 1970 verstrichen sind, denen die aktuelle Prozess-
# ID-Nummer ("$$") angehngt wurde. Diese Methode gewhrleistet, da 
# jedes Ausfhren dieses Skripts immer einen einzigartigen Wert haben 
# wird. Die Verwendung dieses einzigartigen Wertes fr eine Variable 
# in einem Form wird das Zwischenspeichern vermeiden und das nchste 
# Ausfhren des Skripts erzwingen.
#############################################################

# ********** ANFANG DER UNTERPROGRAMME:

#############################################################
# Beachte: Das Unterprogramm "randomValues" generiert eine zufallsbedingte
# Zahl und weist sie "$num" zu. Die Anzahl der Sekunden, die seit dem Jahr 
# 1970 verstrichen sind und die aktuelle Prozess-ID-Nummer ("$$") wurden 
# als Basis fr den Pseudo-Zahlen-Zufallsgenerator verwendet.
#############################################################

sub randomValue
    {
    srand (time + $$);               # Den Zahlen-Zufallsgenerator "laden"
    $num = int (rand ($nunValues));  # generiere die Zufallszahl
    return $num;                     # schicke die Zufallszahl zurck
    }

