xwolf.de|com

Menü

Inhalt dieser Site

Ansicht

Individuelle Benutzerkonfiguration für die Site.

Druckansicht Startseite Suchen

A A A A

Startup-Skripten

Wolfgang Wiese (www.xwolf.de, xwolf@xwolf.de), 21.9.2000, Letzte Änderung: Mai 2003

Die Skripten des CGI Startups basieren auf der Programmiersprache Perl. Außerdem wird ein Unix- oder Linux Betriebssystem vorrausgesetzt. Dies lliegt nicht aus Antipathie gegenüber Windows-Systeme, sondern der Tatsache, daß es sich erwiesen hat, daß über 70% aller Webserver unter dem Mix Apache/Unix bzw. Apache/Linux laufen und dies so stabil, daß selbst Fachzeitschriften von der Benutzung von einer Nutzung des IIS/Microsoft-Systems abraten.

  1. hallo.pl
    Altbekannt, einfach und doch tausende Male erstellt: Das typische "Hallo Welt"-Skript. Hiermit fangen auch wir an. Doch keine Angst; Wir werden Sie schon nicht unterfordern.
  2. environ.pl
    Nachdem wir gesehen haben, wie man einen einfachen String ausgibt, sollten wir wissen, welche sonstigen Variablen wir in unserer Webumgebung nutzen können.
    Dieses Skript gibt die sogenannten Environment-Variablen aus. Dabei handelt es sich um die Variablen, die vom Webserver zur Verfügung gestellt werden und Daten sowohl über diesen selbst, aber auch über den Benutzer der das CGI-Skript aufruft, enthält.
  3. environ_sorted.pl
    Die vorherige Environment-Liste war schön und interessant. Nur war sie etwas unübersichtlich. Diese Variante zeigt den Code, wie wir die Liste alphabetisch sortieren.
    Somit lernen wir, wie man aufalle Variablen eines Hashes zugreift und diesen auch noch gleichzeitig sortiert.
  4. query.pl
    Dieses einfach Skript tut zweierlei. Es schaut nach, ob in der Environment-Variable QUERY_STRING ein Wert übergeben wird. Wird dies getan, wird er ausgegeben.
    Falls die Variable jedoch leer ist, wird dazu aufgefordert in einem Formular etwas einzugeben, was dann wieder an das Skript gesandt wird.
  5. variablen.pl
    Bei einem CGI-Skript werden im Allgemein Werte von einem Formular an das Skript übergeben, das dann irgendwas mit diesen anfängt.
    Dieses Skript ist gleich viel länger. Hier nehmen wir die Parameter, die über die Environment-Variable QUERY_STRING übermittelt werden und geben diese aus; Ebensolches tun wir außerdem mit der weiteren Variablen PATH_INFO, die uns zur Übergabe von Werten ebenfalls zur Verfügung steht.
  6. jump.pl
    Dieses Skript führt eine Weiterleitung aus. Dies bedeutet, daß anstelle des bisherigen Header Content-Types text/html ein neuer eingeführt wird.
    Das wir die URL auf die wir weiterleiten aus dem QUERY_STRING nehmen, sollte hier kein Problem mehr machen...
  7. jump_vars.pl
    Hier verfeinern wir das vorherige Skript etwas: Anstelle einfach nur den QUERY_STRING ungeparst zu übernehmen und als URL zu benutzen, wird stattdessen die Variablenübergabe wie aus einem Formular gemacht, wobei der Namen des EIngabefeldes url lautet.
    Wir benutzen hier dasselbe Konstrukt zum parsen der übergebenen Variablen, wie im Beispiel variablen.pl.
  8. jump_fine.pl
    Obwohl das Skript zur Weiterleitung fertig ist, möchten wir die Gelegenheit nutzen und damit beginnen, den Code leserlich zu machen. Denn wenn dieser erstmal eine bestimmte Länge überschreitet, muß man dafür sorgen, daß er lesbar bleibt. Ansonsten kommt man Wochen oder Jahre später, wenn man das Skript wiedermal anschaut in die Verlegenheit zu fragen, 'Welcher Geek hat das denn da hingerotzt?!?'.
    Wir führen deswegen hier Subroutinen ein und schieben diese unter der Hauptschleife. Außerdem nutzen wir die Kommentarzeichen um die einzelnen Abschnitte einfach erkennbar zu machen.
  9. textcounter.pl
    Die bisherigen Skripten waren schöne Spiele, die aber eigentlich keinen nutzen hatten. Dies ändert sich mit diesem Skript. Obwohl hier einige Leute sicher anderer Meinung sein werden - wer braucht schon einen Zähler für die Homepage? :=)
    Dieses Skript realisiert den einfachsten aller Zähler: Es wird einfach nur gezählt, wie oft auf das Skript zugegriffen wurde. Der Wert wird in einer normalen Textdatei gespeichert. Der aktuelle Zählerstand wird beim Aufruf angegeben.
    In der Praxis wird ein solcher Zähler mittels Serverside Includes eingebaut.
  10. textcounter_flock.pl
    Der obige Zähler schien auf den ersten Blick zu funktionieren. Eine saubere Sache, die man gleich auf die eigene Homepage einbauen könnte...oder?
    Nein. Weil das Skript ein Paradebeispiel ist für etwas, was weltweit viele Programmierer von CGI-Skripten einfach vergessen: Die Datei, in der der Zählerstand notiert wird, ist nicht geschützt gegenüber gleichzeitigem Zugriff!
    Wenn Sie nicht wissen, was das bedeutet, stellen Sie sich eine Autobahnzufahrt vor, die gleichzeitig Zufahrt, wie Abfahrt ist. Was wird passieren, wenn gleichzeitig ein Wagen die Autobahn verläßt und eines auf sie drauffahren will?
    In diesem Skript bauen wir ein Schutz gegen den gleichzeitigem Zugriff ein, wobei wir dann auch das Lesen, wie auch das Schreiben der Datei innerhalb einer Routine ausführen.
  11. grafikcounter.pl
    Dieses Beispiel realisiert einen grafischen Zähler. Dies bedeutet: Der Zählerstand wird in Form einer Grafik zurückgegeben. Der Einfachheit halber, geben wir hier ein XMP-Bild zurück. Wer noch aus den 64er/128er-Zeiten die STRIPS kannte, wird hier möglicherweise ein Deju-vú-Effekt erleben.
    Bemerkenswert wäre noch, was wir mit dem Zählerstand machen, damit aus den einzelnen Ziffern jeweils eine Grafik erstellt werden kann.
  12. grafikcounter_simpledisplay.pl
    In diesem Beispiel machen wir uns die Arbeit leicht (und der CPU des Servers geben wir frei). Anstelle daß wir ein Bild erstellen, lesen wir dieses einfach aus einer Datei ein, und geben das aus.
    Natürlich ist das Bild dann statisch und zeigt auch nicht mehr den Zählerstand an. Aber wozu auch? Wir verstecken den Zähler somit einfach im Source-Code als <IMAGE>-Aufruf und wissen wieviele Zugriffe wir haben ohne das es auch die ganze Welt weiß.
  13. grafikcounter_redirect.pl
    Hier machen wir im Prinzip genau dasselbe wie zuvor. Nur mit einer Ausnahme: Anstelle das das Bild nur als Datei vorliegen muß, können wir als zusätzliche Option mit Hilfe einer Weiterleitung, eine Bilddatei über eine URL ansprechen.
    In andeen Worten: Die Ausgabe des Skriptes ist eine Weiterleitung auf ein Bild, welches sich hinter einer URL verbirgt.
  14. feedback.pl
    Nachdem wir in den obigen Beispielen gesehen haben, wie man einen Zählerstand abspeichert und wiedergibt, wollen wir ein etwas nützlicheres Beispiel machen: Ein Feedback-Skript.
    Dieses Skript nimmt die EIngabe aus einem Formularfeld mit Namen feedback entgegen und speichert es zusammen mit dem Zeitpunkt ab. (Wundern Sie sich beim ausprobieren nicht über diese seltsame große Zahl an der Stelle, wo Sie die zeit erwarten. Es handelt sich dort um die Zeit in Sekunden seit dem 1.1.1970, um 0 Uhr.)
  15. feedback_fields.pl
    Hier erweitern wir das vorherige Skript ein bischen mehr. Hier können wir festlegen, welche Variablen eingegeben werden müssen, damit das Formular, d.h. die eingegebenen Daten gespeichert werden. Außerdem speichern wir die Daten so in einer Datei, daß wir sie später leicht wieder auslesen können.
  16. read_feedback.pl
    Gesagt getan - hier lesen wir die datei aus, die wir im vorherigen Beispiel angelegt haben. Natürlich machen wir das auch gleich so, daß es auch nach etwas aussieht - mit einer kleinen HTML-Table.
    Spielen Sie doch damit etwas rum, und verschönern die Ausgabe noch mehr...!
  17. read_feedback2.pl
    Das Feedback-Skript und das vorherige Skript zum Auslesen hatten ein Problem: Die Datei mit den Feedback-Einträgen kann wachsen und wachsen und irgendwann explodiert der Server und verursacht einen Weltenbrand... Nein, nicht ganz so schlimm. Ich hab gehört die Feuerwehr soll inzwischen ganz gut sein :)
    In diesem Skript geben wir die Möglichkeit mit, daß die Feedback-Datei gleich gelöscht, d.h. geleert wird.
  18. feedback_mail.pl
    Wollen Sie immer nachschauen müssen, ob jemand Feedback eingetragen hat...? Irgendwann wirds langweilig. Warum also nicht die Daten per E-Mail zusenden lassen, anstelle als Datei abzuspeichern?
    Ein großer Unterschied ist es nicht. Schauen Sie es sich doch mal an. Außerdem haben Sie jetzt ein Feedback-Skript, daß Ihnen andere CGI-Programmierer für ein paar Hunnis verkauft hätten. Wenn das nicht gefeiert werden sollte, was dann?
    Zum Beispiel, daß Sie nun den ersten Teil hinter sich haben und -sofern Sie jedes Skript mitgemacht und ausprobiert haben- in der Lage sein sollten, eigene kleine Skripten zu erstellen und zu nutzen.

Hiermit endet der erste Teil.
Natürlich fehlt noch ein besserer Text, wo die einzelnen Skripte genau erklärt werden. Doch auch wenn dieser endlich fertig ist - der Hauptaspekt dieses Startups liegt in der Eigeninitiative.

Übrigens: Wenn Sie aufgepaßt haben, dann haben Sie doch sicher gemerkt, welchen Fehler ich im Feedback-Skript eingebaut habe, oder?

Sollten Sie Feedback und Anmerkungen haben, senden Sie mir bitte eine E-Mail an die Adresse xwolf@xwolf.de.

Vielen Dank!

Info

$Id: startup.shtml,v 1.2 2003/05/20 20:55:32 xwolf Exp $
© 1996 - 2003 by xwolf