Titel: Umfrage V2.1
Bild: Umfrage V2.1 - Auswertung

Lauffähiges Beispiel

Erklärung: Umfrage V2.1 ist ein Statistik-Werkzeug zur Fertigung von Umfragen aller Art.
Um möglichst wenig in den Ablauf des Skriptes eingreifen zu müssen, sind sämtliche relevanten, individuell spezifischen Parameter einmalig im Dateikopf des Skriptums zu setzen, des weiteren ist z.B. mit Definition der Auswahlmöglichkeiten damit auch automatisch deren Anzahl festgelegt.
Hier wird auch festgelegt, auf welche Datei das Skript zur Verwaltung der Umfrageergebnisse lesend wie schreibend zugreifen soll.
Die Auswertung, graphische Aufbereitung und Anzeige der Ergebnisse, sowie die dynamische Erstellung einer Html-Seite zur Neuabgabe von Stimmen erfolgt zum Zwecke der besseren und bequemeren Handhabung durch den Anwender in ein und demselben Skript.
Funktionsweise: Wie aus dem Quelltext bereits zu entnehmen, unterscheidet das Skriptum drei mögliche Fälle:
  • 1.) Normaler, erstmaliger Aufruf per Eingabe der Url oder über Verweis
  • 2.) Aufruf des Skriptums durch sich selbst
  • 3.) Wie 2.), aber IP in Ergebnisdatei noch zwischengespeichert und/oder Cookie gesetzt

Ad 1.) Skriptum erhält keine Übergabeparameter innerhalb der Umgebungsvariablen, die darauf schließen lassen, daß das Skriptum eine Eingabe als Ergebnis eines vorangegangenen Aufrufes verarbeiten soll.
Aufbau einer dynamischen Html-Seite mit Aufbereitung und Anzeige der bisherigen Daten bzw. Abstimmergebnisse, des weiteren Anzeige der notwendigen Html-Elemente für neue Abstimmung.

Ad 2.) Wie 1.), aber mit nicht-leeren Ugebungsvariablen. *)
Dies bedeutet, daß das Skriptum zunächst die soeben erfolgte Stimmabgabe zu den in der Ergebnisdatei bereits hinterlegten Abstimmergebnissen hinzurechnen muß.
Anschließend Anzeige der jetzt aktuellen Umfrage-Daten, sowie ebenfalls Anzeige der notwendigen Html-Elemente für neue Abstimmung wie unter 1.)

Ad 3.) Ganz offensichtlich doppelte Abstimmung, da mehr als einmalig in Folge über den selben Rechner, bzw. IP, eine Stimmabgabe erfolgte.
Erstellen einer Fehlerseite mit Hinweis auf Reload-Sperre und abnormaler Terminierung.

*) An dieser Stelle recht herzlichen Dank an Christian Neuss, der mich auf diese geniale Idee brachte!

Anwendung:
  • Entpacken der Zip-Datei in ein temporäres Verzeichnis.
  • Umfrage.pl in das für CGIs vorgesehene Verzeichnis kopieren, i.e. meist ~/cgi-bin.
  • Editieren genannten Perl-Skriptes, i.e. Eintragen der Auswahlmöglichkeiten und Festlegung von Ort und Name der Ergebnisdatei. Es wird empfohlen, den Standardwert zu übernehmen.
  • Kopieren der Balkenkomponenten als Gif-Dateien in ein vom Browser des Anwenders bzw. vom Webserver zugängliches Verzeichnis, um zur Laufzeit geladen werden zu können.

Die meisten zu setzenden Variablen sind selbsterklärend, wobei "$vertikal='ja'" bewirkt, daß die verschiedenen zur Abstimmung angebotenen Möglichkeiten nicht nebeneinander, sondern untereinander angeordnet werden.
Ist eine Abstimmung beendet, i.e., soll keine Stimmabgabe mehr möglich sein, so kann dies sehr einfach dadurch erreicht werden, daß die Variable "$abst_ja_nein" statt dem Standardwert 'ja' auf 'nein' gesetzt wird.
Die jeweiligen Stimmzahlen und die daraus resultierende Auswertung ist dabei nach wie vor sichtbar, es wird hingegen weder die Abstimmfläche angezeigt, noch kann - auch mit Tricks - eine Stimmenregistrierung mehr erzwungen werden.

Randnotiz:
Unter folgender Voraussetzung kann dieses Skriptum problemlos mehrfach gleichzeitig, i.e. für mehrere voneinander unabhängige Umfragen auf dem gleichen Server und unter dem gleichen Benutzerkonto ausgeführt werden:
Genau wie im Normalbetrieb, bei welchem das Perl-Skript z.B. den Namen umfrage.pl tragend, lesend, wie schreibend auf die Ergebnisdatei ergebnis.txt zugreift, ließe sich diese Aufgabe z.B. dadurch lösen, daß zunächst umfrage.pl kopiert wird und unter umfrage1.pl, umfrage2.pl, usw. zum Einsatz kommt, wobei analog dem Betrieb mit einer einzigen Datei umfrage.pl, der Skript-Datei umfrage(n).pl als in deren Dateikopf eingetragener Ergebnisdatei ergebnis(n).txt zugeordnet ist.

Paket laden: umfrage.zip
[Developer Root] [Main Page]