jsGuest - Gästebuch

Installation und Konfiguration von jsGuest


Hier geht's zur Download-Seite von jsGuest

1. Allgemeines

1.1. Produktbeschreibung in Kürze

jsGuest ist ein völlig frei konfigurierbares Gästebuch. Das Aussehen kann via Template gesteuert werden. Funktionen wie automatische Mailbenachrichtigung bei einem neuen Gästebuch-Eintrag, zensurierte Wörter, HTML- oder "nur Text"-Eingabe, automatische Verlinkung, deutsche und englische Datumsformate, Spam-Schutz und vieles mehr gehören zur Selbstverständlichkeit. Ebenso eine Administrationsoberfläche um Einträge zu editieren oder zu löschen oder allgemeine Einstellungen am Design des Gästebuchs vorzunehmen. Unix/(Windows), deutsch, kostenlos.

1.2. Was kann jsGuest?

jsGuest ist ein Gästebuch mit vielen Funktionen:

1.3. Voraussetzungen

jsGuest benötigt natürlich einen CGI-fähigen Webspace mit ca. 300kb freiem Speicherplatz.

Wenn die Funktion "E-Mail-Benachrichtigung bei neuem Gästebucheintrag" aktiviert ist, ist zudem noch sendmail erforderlich.

Ebenfalls wird für den Secure-Code das GD-Modul vorausgesetzt. Fehlt dieses Modul, ist jsGuest ohne Anpassungen im Script nicht lauffähig. Nach der entsprechenden Code-Anpassung ist jsGuest bis auf die Secure-Code Funktionalität voll funktionsfähig.

1.4. Lizenzbestimmungen

Dieses Skript basiert auf den STANDARD-Lizenzbedinungen, die Sie unter http://www.cgicorner.ch/download/download-info oder in der Datei cgicorner.txt im ZIP-Archiv finden.

2. Installation

2.1. Dateien kopieren und Berechtigungen setzen

Folgende Dateien müssen kopiert und mit den entsprechenden Berechtigungen versehen werden:

 cgi-bin - Verzeichnis, z.B. /cgi-bin/jsguest/
. chmod 755 (od. 777) Verzeichnis
jsguest.cgi chmod 755 Hauptscript
config.pl chmod 700 Konfiguration
subs.pl chmod 700 Zusatzfunktionen (*)
data chmod 755 (od. 777) Verzeichnis (Daten)

 images - Verzeichnis, z.B. /jsguest/images/
. chmod 755/777 Verzeichnis
*.jpg, *.gif chmod 644 Bilder
 Daten-Verzeichnis, z.B. /cgi-bin/jsguest/data/
 .htaccess Datei empfohlen, um Zugriffe via Webbrowser komplett zu verhindern
. chmod 755/777 Verzeichnis
style.css chmod 600 Administrations-CSS
data.pl chmod 600 allgemeine Daten (*)
error.pl chmod 600 Fehlerhafte Loginversuche (*)
*.template chmod 600 Templates (Name frei wählbar)
*.include chmod 600 Include-Dateien (Name frei wählbar)

Anmerkung: Die mit (*) gekennzeichneten Dateien befinden sich nicht im ZIP-Archiv und werden erst im Betrieb erstellt.

Je nach Konfiguration des Webservers werden keine Bilder aus dem cgi-bin Verzeichnis angezeigt. Deshalb wird empfohlen, die Bilder in ein Verzeichnis ausserhalb von cgi-bin zu kopieren und die entsprechenden Bildpfade im Adminbereich anzupassen. Die Standard-Konfiguration des Scripts geht davon aus, dass Bilder im cgi-bin Verzeichnis angezeigt werden können und auch dort abgespeichert sind. Bei einer Ängerung der Installations-Verzeichnisse ist zwingend eine Anpassung im Adminbereich notwendig.

jsguest.cgi benötigt Schreibzugriff auf das Script-Verzeichnis. Dazu ist - je nach Konfiguration des Webservers - ein chmod 777 für das Verzeichnis notwendig. Möglicherweise meldet das Script nach dem chmod 777 jedoch einen "Internal Server Error". Zuerst sollte also immer chmod 755 versucht werden.

2.2. Fehlendes GD-Modul auf meinem Webserver

jsGuest benötigt für den Secure-Code das GD-Modul. Dieses ist auf einigen Webservern nicht installiert. Aus diesem Grund erkennt jsGuest automatisch, ob das Modul installiert ist und modifiziert beim ersten Gebrauch das Script.

Auf Servern, welche das GD-Modul nicht enthalten funktioniert jsGuest einwandfrei, nur die Secure-Code Funktionalität darf nicht aktiviert werden.

Im Adminbereich unter "Gästebuch Einstellungen ändern" erscheint eine Warnung, falls das GD-Modul nicht installiert ist. In diesem Fall muss die Option "Secure-Code (Missbrauchsschutz)" unbedingt deaktiviert werden.

Beim Umzug von jsGuest auf einen neuen Server sollte die Datei subs.pl nicht mitkopiert werden. Dadurch findet eine erneute Erkennung des GD-Moduls statt, so das ggf. bei vorhandenem Modul auf dem neuen Server die Secure-Code Funktionalität genutzt werden kann.

2.3. Update

Alle notwendigen Schritte für den Update sowie alle Neuerungen finden Sie in der Datei update.txt. Es müssen immer alle TODO-Einträge zwischen der eingesetzten und neuen Version beachtet werden.

Zudem steht ebenfalls ein Update-Script zur Verfügung. Um dieses zu nutzen, gehen Sie wie folgt vor:

2.4. Gästebuch-URLs

Die URLs zu Ihrem Gästebuch lauten:

3. Konfiguration

3.1. Erster Login

Die Administrationsoberfläche finden Sie unter: http://www.meinserver.ch/cgi-bin/jsguest/jsguest.cgi?action=admin

Beim ersten Login werden - je nach Konfiguration - die Bilder noch nicht geladen. Dies ist normal und muss Sie nicht weiter stören.

Loggen Sie sich nun mit dem Benutzername admin, ohne Passwort ein. Danach sollte via Menüpunkt "Login-Daten ändern" ein Passwort gesetzt werden.

Sie gelangen nun ins Hauptmenü. Klicken Sie auf den Link "System-Einstellungen ändern". Hier können Sie verschiedene Einstellungen vornehmen. Kontrollieren Sie den Pfad zu sendmail und passen Sie ggf. die Dateipfade für die Konfigurationsdateien sowie Templates an.

3.2. System Einstellungen ändern

Pfad zu sendmail Pfad zu sendmail. Wird bei Mailbenachrichtigung bei neuem Eintrag benötigt. Wenn diese Funktion deaktiviert ist, ist dieses Feld irrelevant.
GMT Zeitzone Definiert die Zeitzone, welche in Mails als Absendezeit dienen soll. [auto] entspricht der eingestellten Zeitzone des Servers.
Korr. Serverzeit gegenüber GMT Dieses Feld muss nur bei einem falsch konfigurierten Webserver mit einem Wert gefüllt werden. In der Regel wird anhand der Server-Konfiguration die aktuelle Serverzeit auf die GMT (Greenwich Mean Time) umgerechnet und dann in die oben definierte Zeitzone gewandelt. Sollte auf dem Webserver die Zeit oder Zeitzone falsch konfiguriert sein, kann dies zu Zeitabweichungen führen, welche in dieser Maske korrigiert werden kann. Die Angabe der Korrektur erfolgt in Stunden, also z.B. "3" oder "-2".
Sommerzeit erzwingen jsNews ermittelt anhand der lokalen Zeitzone des Servers automatisch, ob es sich um Winter- oder Sommerzeit handelt. Steht der Server jedoch in einer Zeitzone, die keine Sommerzeit kennt oder ist fehlerhaft konfiguriert, funktioniert diese automatische Erkennung nicht. In diesem Fall kann mit dieser Option im Sommer die Sommerzeit manuell aktiviert und im Winter dann wieder deaktiviert werden. Im Normalfall kann diese Option auf "Nein" belassen werden.
Daten-Datei (temporär) Beinhaltet temporäre Informationen während der Administration.
Error-Datei (temporär) In diese Datei werden Loginfehler protokolliert.
Gästebuch Daten In diese Datei werden die Gästebuch-Einträge gespeichert.
Copyright Copyright-Informationen für Admin-Oberfläche
diverse Bilder / CSS Pfad zu diversen Bildern und dem CSS der Admin-Oberfläche
diverse Smileys Pfad zu diversen Bildern für Smileys. Lassen Sie alle oder einzelne Pfade leer, um das Smiley nicht als Grafik darzustellen.

3.3. Gästebuch Einstellungen ändern

Bei neuem Eintrag Mail an Wenn hier eine Mailadresse angegeben wird, wird automatisch jeder neue Eintrag an diese Mailadresse gemailt.
Absender E-Mail Absender-Adresse, mit der das Mail versendet werden soll (irrelevant, wenn Eintrag "Bei neuem Eintrag Mail an" leer)
Betreff Betreff des Mails (irrelevant, wenn Eintrag "Bei neuem Eintrag Mail an" leer)
Validierung durch Admin Legt fest, ob neue Einträge zuerst noch durch den Administrator validiert werden müssen. E-Mail-Adresse bei "Bei neuem Eintrag Mail an" muss ausgefüllt sein.
Gästebuch Eintrag Template UNIX-Pfad zum Gästebuch-Template mit dem Formular für einen neuen Eintrag
Gästebuch Anzeige Template UNIX-Pfad zum Gästebuch-Template zur Ansicht des Gästebuchs
Secure-Code (Missbrauchsschutz) Legt fest, ob der Secure-Code Missbrauchsschutz aktiviert ist. Ist dies der Fall, wird in einer Grafik eine fünfstellige Zahl angezeigt, welche in ein Eingabefeld abgetippt werden muss. Dies verhindert automatische Eintragungen ins Gästebuch durch Spammer.
Secure-Code Hintergrund UNIX-Pfad zum Hintergrundbild des Secure-Codes. Nur relevant, wenn Secure-Code auch aktiviert ist.
Secure-Code Hintergrund-Schrift Hex-Code der Schriftfarbe für die "Störziffern" im Hintergrund des Secure-Codes.
Secure-Code Vordergrund-Schrift Hex-Code der Schriftfarbe des Secure-Codes.
Anzahl Einträge pro Seite Anzahl Gästebuch-Einträge, die auf einer Seite dargestellt werden sollen.
Links in folgendem Frame öffnen Frame, in dem angeklickte Links geöffnet werden sollen. _blank für neues Fenster
Gesperrte Wörter Wörter, die im Gästebuch nicht dargestellt werden sollen. Bei erlaubtem HTML können so auch Images oder JavaScript-Code blockiert werden.
"Blacklisted words" ersetzen durch Text, durch den oben genannte Wörter ersetzt werden sollen
Folgende Felder im Editieren als mehrzeilige Textfelder darstellen Definiert Feldnamen, die im Editieren-Modus als mehrzeilige Textfelder dargestellt werden. Ein Feldname pro Zeile.
Text trennen nach x Zeichen Trennt den Text mit einem Leerzeichen, wenn x aneinander folgende Zeichen kommen. Verhindert Darstellungsfehler bei Tabellen mit geringer Breite. Nicht empfohlen.
URL wenn neuer Eintrag OK URL, zu der der Besucher weitergeleitet werden soll, wenn ein neuer Eintrag OK ist. Absolute URL mit http:// erforderlich! Wird das Feld leer gelassen, wird nach einem neuen Eintrag automatisch das Gästebuch angezeigt.
Infotext bei neuem Eintrag Text, der nach einem neuen Eintrag angezeigt werden soll. Nur möglich, wenn nach einem neuen Eintrag das Gästebuch angezeigt wird.
Fehlertext: nicht alle Pflichtfelder Fehlertext, der oberhalb des Formulares angezeigt wird, wenn nicht alle Pflichtfelder ausgefüllt wurden oder der Secure-Code fehlerhaft ist,
Neuer Eintrag erscheint Definiert, ob neue Einträge am Anfang (Standard) oder Schluss angezeigt werden sollen.
Text für vorherige Seite Text für Link zur vorherigen Seite (zurück)
Text für nächste Seite Text für Link zur nächsten Seite (weiter)
Datumsformat Definiert, wie das Datum im Gästebuch dargestellt werden soll. deutsche und englische Zeitformate möglich.
Zeit Definiert, wie die Zeit im Gästebuch dargestellt werden soll.

3.4. Einträge verwalten

Hier können Einträge bequem editiert oder gelöscht werden.

3.5. Dateisperre

Jeder Schreibzugriff auf eine Datei wird mit einer betriebssystemunabhängigen Dateisperre versehen. Diese Dateisperre sollte in der Regel wieder aufgehoben werden, kann aber in Ausnahmefällen (z.B. Script-Absturz) erhalten bleiben.

In der Regel kann die Datei wieder via Adminoberfläche entsperrt werden. Falls dies nicht geht, muss die entsprechende lock-Datei gelöscht werden (Beispiel: Lock-Datei für config.pl heisst config.pl.lock).

4. Einrichten eines Gästebuchs

4.1. Neuer Eintrag Formular

Das Template mit dem Formular für neue Einträge ist eigentlich eine normale HTML-Datei. Es gibt jedoch noch ein paar spezielle Felder, welche nachfolgend genauer erläutert werden. Das Formular sollte mit der method="post" abgeschickt werden, um Einschränkungen in Bezug auf die maximale Textlänge zu umgehen.

In jedem Formular sind mindestens zwei versteckte Felder (action=newentry und id=<!--id-->). Ein minimales Formular sieht also so aus:

<form action="<!--CGIURL-->" method="post">
<input type="hidden" name="action" value="newentry"/>
<input type="hidden" name="id" value="<!--id-->"/>
<!--weitere Felder-->
<input type="submit" value="Eintragen"/>
</form>

Die zusätzlichen Felder dürfen beliebige Namen haben. Die Gross-/Kleinschreibung wird beachtet. Es gibt jedoch einige Feldnamen, welche auf keinen Fall verwendet werden dürfen, da sie für interne Zwecke gebraucht werden:

Bei einem Fehler wird wieder das Eingabeformular angezeigt. Damit dort die im Adminbereich definierte Fehlermeldung, dass noch nicht alle Pflichtfelder ausgefüllt seien oder der Validierungscode nicht korrekt sei, angezeigt werden kann, muss an beliebiger Stelle (dort wie die Meldung erscheinen soll), der Code <!--SYSTEMMESSAGE--> eingefügt werden.

Ebenfalls ist es für den Benutzer eine Erleichterung, wenn das Formular bei einem Fehler bereits wieder die (fehlerhaften) Eingaben enthält. Dazu müssen alle Eingabefelder um den value=-Tag ergänzt werden:

Der Link, um das Formular für einen neuen Eintrag anzuzeigen lautet: http://www.meinserver.ch/cgi-bin/jsguest/jsguest.cgi?action=new.

4.1.1. Spezielle Felder

Das Gästebuch kann mit speziellen Feldnamen noch etwas genauer konfiguriert werden:

PFLICHT: Definiert beliebige Felder als Pflichtfelder, die immer ausgefüllt werden müssen. Die Pflichfelder werden, durch ein Komma getrennt, im Value übergeben.
<input type="hidden" name="PFLICHT" value="Name,Kommentar"/>

Feldname beginnt mit LEER-: Wenn das Feld Test leer ist, wird der Wert von LEER-Test bei Test eingetragen.
<input type="hidden" name="LEER-Homepage" value="keine Homepage"/>
<input type="text" name="Homepage" value=""/>

Homepage = http://www.cgicorner.ch --> Feld Homepage = http://www.cgicorner.ch
Homepage ist leer --> Feld Homepage = keine Homepage

Feldname beginnt mit LINK-: Feld wird in einen Link umgewandelt. mailto wird dabei automatisch erkannt.
<input type="text" name="LINK-email"/>
http://www.cgicorner.ch --> <a href="http://www.cgicorner.ch">http://www.cgicorner.ch</a>
[email protected] --> <a href="mailto:[email protected]">[email protected]</a>
irgendwas --> irgendwas

Feldname beginnt mit FORMAT-: gibt an, ob ein Feld HTML (standard) oder nur Text ist
<input type="hidden" name="FORMAT-Kommentar" value="Text"/>
<input type="text" name="Kommentar" value=""/>

Bei Text wird "<" --> "&lt;", ">" --> "&gt;" und "\n" --> "<br/>\n"

<!--includefile=datei.ext-->: Fügt 1:1 die Datei "datei.ext" in den HTML-Code ein

4.1.2. Secure-Code Validierung

Der Secure-Code ist ein fünfstelliger Code in einer Grafik, welche bei einem neuen Gästebuch-Eintrag in ein Textfeld eingetragen werden muss. Der Zahlencode in der Grafik kann von automatisierten Gästebuch-Spam-Scripts nicht ausgelesen werden und bietet so einen effizienten Schutz gegen automatisierte Gästebuch-Einträge, welche sich seit einigen Monaten massiv häufen. Gegen manuelle Werbeeintragungen (also durch einen natürlichen Mensch, der den Code lesen kann) hilft der Secure-Code nicht.

Damit der Secure-Code benutzt werden kann sind einige Voraussetzungen notwendig:

Damit das Eingabefeld für den Secure-Code nur bei aktivierter Funktion angezeigt wird, müssen die entsprechenden Zeilen den Tag <!--scyes--> beinhalten. Dies bewirkt, dass die Zeile bei deaktiviertem Secure-Code komplett unterdrückt wird. Eine Secure-Code Zeile im Template, welche nur dann angezeigt wird, wenn diese auch aktiviert ist, sieht also so aus:

<!--scyes--><input type="text" name="seccode"> <img src="<!--CGIURL-->?action=seccode&amp;id=<!--id-->"/>

4.2. Template erstellen

Auch das Anzeige-Template besteht aus einer ganz normalen HTML-Datei mit einigen kleinen Änderungen:

Der Bereich, der pro Gästebuch-Eintrag wiederholt werden soll, muss zwischen folgenden Tags stehen:
<!--GBSTART--> und <!--GBEND-->

Wenn ein Wert aus dem Gästebuch eingetragen werden muss, muss dieser mit dem Feldnamen als HTML-Kommentar eingefügt werden:
Um beispielsweise den Inhalt des Feldes <input type="text" name="Feldname"/> aus dem Eintrags-Formular anzuzeigen, muss folgender Code ins Anzeige-Template eingefügt werden: <!--Feldname-->

Ausserdem stehen noch folgende spezielle Felder zur Verfügung:

Ein spezieller Tag ist ebenfalls noch <!--NICHTLEER_Feldname=Text-->. Dieser Tag fügt einen bestimmten Text nur dann ein, wenn ein Feld nicht leer ist. Wichtig: Innerhalb des NICHTLEER-Tags dürfen keine weiteren Felder mehr sein, sondern nur noch Text!
Beispiel: <a href="mailto:<!--E-Mail-->"><!--NICHTLEER_E-Mail=<img src="mail.gif" border="0"/>--></a>. Dieses Beispiel fügt den Verweis auf das Bild nur dann ein, wenn auch eine E-Mail Adresse angegeben wurde. Der Code sieht dann also wie folgt aus:
E-Mail angegeben: <a href="mailto:[email protected]"><img src="mail.gif" border="0"/></a> (verlinkte Grafik)
E-Mail nicht angegeben: <a href="mailto:"></a> (leerer Link, nichts sichtbar)

Als Letztes gibt es noch eine Möglichkeit, bestimmten Text nur dann anzuzeigen, wenn eine Bedinung erfüllt ist. Der Aufbau dazu sieht so aus: <!--if:feldname§wert§text-->. Beispielsweise kann ein Text nur unter bestimmten Voraussetzungen angezeigt werden:

<!--if:test§§Im Feld test befindet sich leider kein Text :(-->

Diese Abfrage lässt sich auch mit anderen Operanden durchführen:

<!--if:feldname=wert§text--> Zweite Schreibweise für Feldname entspricht Wert
<!--if:feldname!wert§text--> Feldname entspricht NICHT Wert
<!--if:feldname<wert§text--> Feldname ist kleiner als Wert
<!--if:feldname>wert§text--> Feldname ist grösser als Wert




Copyright © 2012 by Jürg Sommer, scripts@cgicorner.ch
http://www.cgicorner.ch
Letzte Änderung: 7. Februar 2012