» Start & Installation » ASP-Grundlagen » VBScript » Datenbanken » Erweiterte Techniken » Fehlercode-Suche » FAQ » Forum für aspfehlercodes » ASP » JavaScript » ASCII & ANSI » HTTP-Statuscodes » Codepage » LCID » VBScript » JScript
|
Link: Wichtiger Hinweis in eigener Sache!
| Autor: Klaus Keller | Erstellt am: 2003-06-01 | Aufrufe: 18953 |
Tipp 37: Gästebuch
Gästebücher sind eine sehr gute Möglichkeit, Meinungen von Besuchern über eine Seite zu erhalten, deshalb werden auf vielen Seiten gerne Gästebücher verwendet. Was sollte ein Gästebuch können, was muss man beachten?
Zuerst einmal: Mit dem verwenden eines Gästebuches entsteht auch eine Verpflichtung. Der Besitzer der Internetseite bzw. der Webmaster muss regelmässig prüfen, ob Einträge gegen Gesetze verstösst. Was bedeutet regelmässig? Meiner Meinung nach nicht ganz klar definiert, dies hängt sicherlich von der Anzahl der Besucher ab, aber mind. einmal pro Woche ist sicherlich erforderlich. Je nach Anzahl der Besucher und der Gästebucheinträge durchaus aber auch 1 mal pro Tag.
Als Mindestvoraussetzung für ein Gästebuch zählt wohl das Schreiben eines Beitrags, Angabe von Email-Adresse, Ort und eventuell einer Internet-Seite. Dazu sollte der Eintrag auf Korrektheit geprüft werden. Das hier vorgestellte Gästebuch erfüllt diese Anforderungen. Weitere Features wäre z.B. die Angabe von Icons, einen Administratorbereich und sicherlich noch viele andere Dinge. Das würde jedoch den Rahmen sprengen. Das Gästebuch hat ca. 500 Zeilen Quellcode, eine Erweiterung des Gästebuches und eine Integration in das Design der Seite sollte recht einfach sein. Ein funktionierendes Beispiel des Gästebuchs habe ich Ihnen hier bereitgestellt.
Das Gästebuch verwendet keine Text-Dateien, sondern basiert auf einer Datenbank. Bei vielen Providern steht oftmals, daß DSN-Verbindungen nicht unterstützt werden. Leider interpretieren dies viele falsch und meinen, der Provider unterstützt überhaupt keine Datenbanken, was allerdings nicht korrekt ist. Wie Sie aus meinem ASP-Kurs ersehen können, ist die hier verwendete DSN-lose Datenbankverbindung funktional und sogar noch effizienter als eine DSN-Verbindung. Damit Sie immer über die Einträge auf dem laufenden sind, wird Ihnen eine Email zugesandt, sobald ein Eintrag erstellt wurde. Natürlich gilt hierbei: Als Email-Komponente habe ich JMail verwendet, eventuell müssen Sie die Komponente ändern. Ebenfalls ändern müssen Sie die Angaben beim Emailversand, z.B. die Serveradresse.
Der Quellcode wird in dieser Seite nicht komplett dargestellt, bei ca. 500 Zeilen wäre dies einfach zuviel, am Seitenende können Sie sich das komplette Skript inkl. Access 97-Datenbank herunterladen.
Was kann das Gästebuch?
- Die Angabe von Text, dem Namen und der Email-Adresse ist die Mindestvoraussetzung für einen Eintrag.
- Email-Adresse wird geprüft, die Prüfungsmethode habe ich Ihnen in Tipp 18 vorgestellt.
- Die Einträge werden in einer Datenbank gespeichert.
- Paging: Es wird nur eine begrenzte Anzahl an Einträgen je Seite dargestellt, Die Anzahl ist im Skript einstellbar.
- Bei jedem Eintrag wird eine Email an eine Email-Adresse gesendet, die Email-Adresse (z.B. die vom Webmaster) wird im Skript angegeben.
- Es ist einfach in eine Seite integrierbar. Der Seitenstart und das Seitenende ist jeweils in einer eigenen Prozedur ausgelagert.
- Die IP des Eintragenden sowie einige Angaben aus den Servervariables wird in die Datenbank eingetragen.
Vorweg Einige Änderungen müssen eventuell durchgeführt werden, bevor das Gästebuch online geht. Wenn die Datenbank in einem anderen Ordner als "db" gespeichert wird, so muss die Pfadangabe geändert werden. Ändern Sie hierzu die Wertzuweisung an die Variable strConn.
Wieviele Einträge sollen pro Seite dargestellt werden? Ich habe hier den Wert auf 10 festgeschrieben. Ebenso muss festgelegt werden, wieviele Zeichen maximal als Text für den Gästebucheintrag vom Besucher geschrieben werden können. Dieser Wert ist auf 255 festgelegt. Diese Festlegung ist für Textfelder erforderlich, wenn Sie allerdings Memo-Felder verwenden, können Sie auch längeren Text als Eintrag schreiben lassen. Dennoch sollten Sie Textlänge begrenzen.
Wie bereits geschrieben, wird JMail als Mail-Komponente verwendet, hier müssen Sie eventuell die installierte Mail-Komponente angeben. Auch die Serveradresse und der Domain-Name muss noch geändert werden.
Was ist zu tun? Wie ich bereits in vielen Beiträgen schrieb, ist eine übersichtliche Programmierung unbedingt erforderlich. Deshalb sollte man bestimmte Aufgaben in Prozeduren auslagern, so wird der Quelltext leserlich und übersichtlich. Im nachfolgenden Code wird festgestellt, was zu tun ist:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| Select Case Submit Case "Zur Vorschau" Call GBPruefung() Call Formular() Case "Eintragen" Call GBPruefung If Fehler Then Call Formular() Else Call InDBEintragen() Call EmailSenden() End if Case "Neu" Call NeuerEintrag() Call Formular() Call SchreibeGBEintraege() Case Else Call Formular() Call SchreibeGBEintraege() End Select |
Durch diese Einteilung ist schnell erkennbar, was zu tun ist. Bei der Vorschau sollen zuerst alle Daten geprüft werden, und zuletzt wird das Formular angezeigt.
Die Prozedur Formular Diese Prozedur wird auf fast jeder Seite für das erstellen eine Beitrags verwendet. Es wird nur jeweils ein Formular verwendet, ob Vorschau, ob Formular mit Fehlermeldung, oder einfach als Formular für einen Eintrag. Somit ist das Ändern des Formulars für die unterschiedlichen Anforderungen sehr einfach.
Bisherige Beiträge auflisten Alle Beiträge im Gästebuch wird mit der Prozedur SchreibeGBEintraege geschrieben. Dabei werden nicht alle Beiträge in einer Seite dargestellt, sondern nur eine begrenzte Anzahl, als Pagesize sind 10 Beiträge angegeben. Das Weiterblättern funktioinert sowohl mit Pfeilen (">>") als auch per Zahlen. Natürlich können Sie auf die Zahlen verzichten, und nur die Pfeile einsetzen
Wenn Sie einen Beitrag nicht anzeigen lassen möchten, so brauchen Sie in der Datenbank das Feld "Status" von true auf false setzen. Damit man den Überblick bei den Beiträgen nicht verliert, wird jeder 2te Beitrag in einer anderen Farbe hinterlegt.
Beiträge in die Datenbank eintragen. Beor ein Beitrag eingetragen wird, erfolgt zuerst eine Prüfung. Hierbei wird die Email-Adresse geprüft, ob ein Name angegeben wurde, und ob ein Text für das Gästebuch geschrieben wurde. Nur wenn alles in Ordnung ist, wird der Eintrag in die Datebank geschrieben. Dabei wird sowohl die IP-Adresse des Besuchers als auch der HTTP_USER_AGENT in die Datenbank geschrieben.
Auch ein Datum wird in die Datenbank geschrieben, und zwar im ISO-Format. So wird das Problem mit unterschiedlichen Datumsformaten umgangen.
HTMLEncode Statt Server.HTMLEncode habe ich eine eigene Funktion für die Dekodierung verwendet. Warum? Auf jeden Fall sollte man HTML deaktivieren, so daß keine Bilder, Umleitungen o.ä. von Besuchern erstellt werden kann. Wenn man nun aber Server.HTMLEncode verwendet, dann ist die Möglichkeit, daß aus 200 Zeichen mehr als 255 Zeichen werden, durchaus gegeben. Denn aus & wird & und aus Ü wird Ü. Deshalb habe ich eine eigene Funktion geschrieben, diese kodiert nur wenige Zeichen: < und >
Dazu wird für die SQL-Anweisung das Hochkomma ( ' ) verdoppelt ( ' ' ), so wird das Hochkomma nicht als Anweisung im SQL-String interpretiert. Desweiteren erfährt der Euro eine Sonderbehandlung. Um das Eurozeichen auszugeben, gibt es mehrere Möglichkeiten: €, €, € und €. Allerdings wird nicht jedes Zeichen korrekt umgesetzt, vor allem Netscape 4.x und kleiner macht hier Schwierigkeiten, wer sonst! Deshalb werden alle Möglichkeiten in € umgewandelt.
Das nächste Problem ist der Zeilenumbruch; dieser wird von vbcrlf in <br> geändert.
Herunterladen: Gaestebuch.zip
|
|