Jax Guestbook v3.3
Dokumentation
Was ist Jax Guestbook? - Wozu braucht man es?
Leistungsmerkmale (Features)
Systemvoraussetzungen
Lizenz
Wie kann man die Farben und Schriftarten anpassen?
Wie legt man die lokale Zeitzone fest?
Wie kann man mehrere Gästebücher
gleichzeitig betreiben?
Hafte ich für Gästebucheinträge?
Wie kann man Gästebucheinträge
kommentieren?
Wie kann man die IP-Adresse eines Benutzers sperren?
Wie ändert man die Datei-Zugriffsrechte
auf dem Webserver?
Wie funktioniert der e-mail-Adressschutz?
Wie viele Einträge kann Jax Guestbook speichern?
Wo erhalte ich Informationen über Updates und
Änderungen?
Projekt: | Jax Guestbook (WWW-Gästebuch) | |
Version: | 3.3 | |
Interpreter: | PHP 4.02+ | |
Code: | Andreas John | |
Design: | Andreas John | |
Homepage: | www.jtr.de/scripting/php/guestbook/ | |
Lizenz: |
Copyright (C) 2001-2003, Andreas John [ Jack (tR) ] Dieses Programm ist Freeware im Sinne der "General Public License"
Version 2 oder neuer! Den genauen Wortlaut dieser Lizenz finden Sie
in der beiliegenden Datei gpl.txt, bzw. auf der Website der Free Software
Foundation unter http://www.fsf.org/copyleft/gpl.html Bitte beachten Sie, dass ich keinerlei Haftung für Schäden übernehme, die im Zusammenhang mit der Nutzung dieser Software auftreten... |
Jax Guestbook ist vielleicht etwas unbedeutender als andere Open Source Projekte, aber ich möchte trotzdem allen Leuten ein großes Dankeschön aussprechen, die dieses und viele andere Open Source Projekte durch ihre Hinweise, Übersetzungen, liebevollen Anpassungen und Links auf ihren Webseiten unterstützen...
Mein persönliches Dankeschön geht vor allem an:
Albert Alcaine http://www.alcaine.info |
Jax Guestbook ist ein übersichtliches und einfach zu verwaltendes WWW-Gästebuchsystem, das Sie gänzlich ohne Programmiererfahrungen in Ihre Homepage einbauen und beliebig anpassen können.
In einem WWW-Gästebuch können die Besucher Ihrer Homepage (wie in einem "richtigen" Gästebuch) persönliche Grüsse und Kommentare zu Ihrer Website, sowie Ihre e-mail-Adressen und Verweise zu Ihren eigenen Homepages hinterlassen. Durch Gästebücher wirken Webseiten persönlicher, und geben Ihnen als Webmaster eine bequeme Möglichkeit, Rückmeldungen und Verbesserungsvorschläge zu ihrer Website zu erhalten.
Jax Guestbook bietet Ihnen neben den typischen Funktionen eines WWW-Gästebuchs viele zusätzliche Neuerungen. Besonders hervorzuheben ist an dieser Stelle die sehr flexible Unterstützung verschiedener Datenquellen, die es ermöglicht, das Gästebuch sowohl mit einer einfachen Textdatei als auch mit einem MySQL-Datenbanksystem zu betreiben.
Ein weiteres evtl. hervorhebenswertes Feature ist die Möglichkeit, die e-mail-Adressen nach aussen hin über einen Formmailer zu verstecken. Ein Formmailer ist ein Programm, dass die e-mails direkt über ein Formular auf der Website verschickt. Somit kann ein Besucher e-mails an einen anderen Besucher verschicken, ohne dessen e-mail-Adresse zu kennen. Diese Technik soll vor allem dazu dienen, die e-mail-Adressen vor Spammern zu schützen...
Nachfolgend finden Sie eine Übersicht der wesentlichen Leistungsmerkmale von Jax Guestbook:
Jax Guestbook wurde in PHP 4 geschrieben, einer serverseitigen Programmiersprache, mit der man dynamisch erzeugte Webseiten erstellen kann! (Fragen Sie gegebenenfalls Ihren Web-Provider nach PHP-Unterstützung!)
Jax Guestbook ist in der Lage, die Daten in einfachen Textdateien, sowie in einem MySQL-Datenbanksystem abzulegen, es läuft auch ohne MySQL-Datenbank-Anbindung!
Jax Guestbook und all seine Einzel-Bestandteile unterliegen den Bedingungen
der GPL - General Public License in der
Diese Lizenz erlaubt es Ihnen vor allem, die Software frei weiterzugeben und natürlich weiterzuentwickeln. Desweiteren sind Sie hiermit verpflichtet, einen Copyrighthinweis, bzw. einen Link zum Originalskript (http://www.jtr.de/scripting/php/guestbook) beizubehalten!
Jax Guestbook wurde in PHP 4 geschrieben, einer serverseitigen Programmiersprache, mit der man dynamisch erzeugte Webseiten erstellen kann! (Fragen Sie gegebenenfalls Ihren Web-Provider nach PHP-Unterstützung!)
Jax Guestbook ist in der Lage, die Daten in einfachen Textdateien, sowie in einem MySQL-Datenbanksystem abzulegen, es läuft auch ohne MySQL-Datenbank-Anbindung!
Verfügen Sie für Ihre Website bereits über PHP-Unterstützung, dann tun
Sie bitte folgendes:
Jax Guestbook wurde so entworfen, dass es sowohl einfache Textdateien, als auch MySQL-Datenbanktabellen zur Speicherung der Einträge verwenden kann. Der Betrieb unter Verwendung eines MySQL-Datenbanksystems ist bei großen Gästebüchern mit mehreren tausend Einträgen in der Regel die schnellere CSV-Variante...
Verfügen Sie über MySQL-Unterstützung dann tun Sie bitte folgendes:
CREATE TABLE guestbook (
id int(4) NOT NULL auto_increment,
date varchar(10) NOT NULL default '',
time varchar(8) NOT NULL default '',
ip varchar(16) NOT NULL default '',
name varchar(30) NOT NULL default '',
mail varchar(100) NOT NULL default '',
age char(3) default NULL,
location varchar(30) default NULL,
homepage varchar(100) default NULL,
icq varchar(12) default NULL,
message text NOT NULL,
hide_entry char(1) NOT NULL default '0',
sec_mail char(1) NOT NULL default '1', xkey varchar(32) default NULL,
PRIMARY KEY (id)
) TYPE=MyISAM; CREATE TABLE `guestbook_ips2block` ( `id` int(11) NOT NULL auto_increment, `ip` varchar(16) NOT NULL, `timestamp` varchar(12) NOT NULL, PRIMARY KEY (`id`) ) TYPE=MyISAM;
Nachdem Sie das Gästebuch wie in Kapitel II beschrieben installiert haben, können Sie Ihre Webseiten mit dem Skript verlinken. Dabei haben Sie die Möglichkeit, über die Parameter nach dem Fragezeichen Einfluss auf die Ausgaben des Skriptes zu nehmen.
http://www.meinedomain.tld/guestbook/jax_guestbook.php?guestbook_id=0&language=english
guestbook_id gibt das verwendete Gästebuch an (falls Sie mehrere Gästebücher über das Skript verwalten -> siehe FAQ: Verwaltung mehrerer Gästebücher)
language gibt die Sprache an, in der die Wochentage und Meldungen des Kalendars angezeigt werden sollen. Wichtig ist, dass für die in der URL angegebene Sprache auch eine entsprechende Sprachvorlage im Verzeichnis language existiert! Andernfalls wird die Sprache gewählt, die in globals.inc.php festgelegt wurde.
gmt_ofs gibt an, um wieviel Stunden die lokale Uhrzeit des Besuchers von der Greenwhich Mean Time (GMT) abweicht. Die Uhrzeiten der Einträge werden entsprechend umgerechnet und die Zeitverschiebung angegeben. (-> siehe FAQ: Berücksichtigung der Zeitverschiebung)
Dafür stehen im Verzeichnis styles verschiedene vordefinierte Stylesheets zur Verfügung, die man nach Belieben mit einem Texteditor verändern kann.
Da die Besucher aus den unterschiedlichsten Erdteilen stammen können, müssen die unterschiedlichen Zeitzonen berücksichtigt werden.
Um die Zeit aller Einträge zu vereinheitlichen, speichert Jax Guestbook alle Gästebucheinträge in GMT-Zeit (Greenwhich Mean Time) und addiert bei der Anzeige die lokale Zeitverschiebung des Besuchers dazu.
Diese lokale Zeitverschiebung wird normalerweise über die jeweilige Sprachvorlagedatei (im Verzeichnis language) also indirekt mit dem Parameter language gesteuert, lässt sich aber auch manuell über den Parameter gmt_ofs setzen:
...?language=english&guestbook_id=0&gmt_ofs=1
Die angegebene URL würde z.B. die Zeiten der Einträge für einen Besucher aus Deutschland anpassen (obwohl language=english gesetzt ist), also jeweils 1 Stunde dazuaddieren.
Möchten Sie dem Skript mehr als ein Gästebuch betreiben, können Sie das entsprechende Gästebuch mit dem Parameter guestbook_id auswählen. z.B:
http://../jax_guestbook.php?guestbook_id=1
Aus Sicherheitsgründen kann der Dateiname des Gästebuchs nicht direkt
mit der URL weitergegeben werden.
Die Zuordnung zwischen Gästebuch-ID und Gästebuchname müssen
Sie von Hand in der Datei globals.inc.php vornehmen.
...
// Titel of the HTML-page
$gbfiles[0]->title = "Jax Guestbook";
$gbfiles[1]->title = "Guestbook 2";
// Data source
$gbfiles[0]->data_source = "csvfile";
$gbfiles[1]->data_source = "mysql";
$gbfiles[0]->guestbookfile = "guestbook";
$gbfiles[1]->guestbookfile = "secondbook";
$gbfiles[0]->ipblockfile = "ips2block";
$gbfiles[1]->ipblockfile = "ips2block2";
// CSS template for the Guestbook
$gbfiles[0]->css = "styles/blue-orange.css";
$gbfiles[1]->css = "styles/blue.css";
...
Im Beispiel wird ein weiteres Gästebuch mit dem selben Skript benutzt:
Ein Gästebuch auf Basis der MySQL-Tabelle secondbook ist über die
URL http://../jax_guestbook.php?guestbook_id=1
erreichbar
Äquivalent wird mit der URL http://../jax_guestbook?guestbook_id=2
eine dritte Gästebuchdatei zur Speicherung verwendet usw...
Sie können für jedes einzelne Gästebuch die Datenquelle (mysql/csvfile) frei wählen!
Es gibt in Deutschland mindestens einen juristischen Fall, in dem entschieden wurde, dass Webseiteninhaber den Inhalt Ihrer Gästebucheinträge regelmäßig (1 mal pro Woche) überprüfen müssen, um nicht persönlich für illegale Inhalte haftbar gemacht zu werden:
siehe http://www.heise.de/newsticker/data/anw-10.07.02-010/
Vor der Haftung für Gästebucheinträge können Sie sich übrigens nicht mit dem Disclaimer "Hinweis auf Distanzierung von den Inhalten" schützen, den man immernoch auf vielen privaten Websites antrifft...
Wenn Sie erst gar kein Risko eingehen möchten, benutzen Sie am besten den Genehmigungsmodus (Setzen Sie das Häkchen bei "Permission required?" im Administrationsprogramm!) Ausserdem können Sie bei Beschwerden bis zur Klärung des Falls die Nachricht mit dem Administrationsprogramm wieder verstecken.
Ich bekomme regelmäßig Anfragen, warum ich keine Funktion zum Kommentieren der Gästebucheinträge in Jax Guestbook einbaue. Dazu nur soviel:
Diese Frage wird mir erstaunlich oft gestellt. Ich persönlich würde mich zwar eher darüber freuen, wenn sich jemand in mein Gästebuch einträgt, aber egal...hier ist die Lösung:
Jax Guestbook verwendet eine Tabelle (standardmäßig die Datei bzw. MySQL-Tabelle guestbook_ips2block) um die IP Adressen von Benutzern zu speichern, die sich bereits in das Gästebuch eingetragen haben, oder für ihren Eintrag übermäßig viel Schimpfworte verwendet haben:
"ip","timestamp"
"162.127.20.31","1042978994"
"227.14.110.10","1043778394"
...
Der erste Eintrag dieser Tabelle enthält die IP-Adresse des Benutzers. Der zweite Eintrag ist der Zeitstempel, der die abgelaufenen Sekunden seit dem 31.12.1970 angibt. Dieser Zeitstempel gibt das Ablaufdatum der Sperre an.
Jax Guestbook überprüft bei jedem Start, ob der Zeitpunkt eines Eintrags bereits überschritten ist, und löscht diesen dann. Wenn Sie einen Benutzer dauerhaft sperren möchten, setzen Sie einfach einen unmöglichen Zeitstempel für die IP z.B.: "227.14.110.10","9999999999"...
(Wenn Sie Jax Guestbook im CSV-Modus betreiben, können Sie die ips2block-Datei downloaden und die Werte mit einem Texteditor editieren. Verwenden Sie Jax Guestbook im MySQL-Modus, müssen Sie die Einträge mit einem Datenbank-Editor wie PHPMyAdmin verändern)
Wenn Ihr Webserver unter Unix arbeitet (Apache) müssen Sie den Unix-Befehl chmod zum Ändern der Dateirechte verwenden. (Wie Sie das bequem von Ihrem FTP-Client aus machen können, ist weiter unten beschrieben)
Die Syntax von chmod lautet:
chmod rwxrwxrwx
filename
r = lesen
w = schreiben
x = ausführen
Der Befehl erwartet drei 3er-Tupel welche die Zugriffsrechte für die "Gruppen"
angeben: [rwx][rwx][rwx]
Die Gruppen von rechts nach links:
Alle Benutzer
Alle Benutzer der gleichen Gruppe wie Besitzer
Nur der Besitzer
Die Tupel kann man sich auch in Binärdarstellung vorstellen:
chmod [rwx][rwx][rwx]
wäre äquivalent mit
chmod [111][111][111]
bzw. in dezimalschreibweise mit
chmod [7][7][7]
und da haben wir auch schon den fertigen chmod Befehl um "allen" Zugriff
auf die Dateien zu geben:
chmod 777 guestbook
chmod 777 ips2block
(Die benötigten Dateirechte hängen von der Webserver-Konfiguration
ab. Wenn Sie misstrauisch sind, und dem Skript nicht die vollen Rechte (777)
geben wollen, erhöhen Sie langsam die Rechte, bis das Skript fehlerfrei
läuft!)
Die meisten FTP-Clients, wie z.B. WS-FTP
unterstüzen den chmod-Befehl bequem von der Oberfläche aus. Man muss
bei WS-FTP z.B. nur mit der rechten Maustaste auf eine Datei im Ftp-Fenster
klicken, dann auf chmod und dann die zu setzenden Attribute anklicken...
Um an e-mail-Adressen zu gelangen, benutzen Spammer häufig spezielle Suchmaschinen, die Webseiten (vor allem mit Gästebüchern und Foren) systematisch nach e-mail-Adressen abgrasen. Um sich vor diesen SPAM-Crawlern zu schützen, kann man entweder
1) die e-mail-Adressen als unverlinkte Grafiken auf der Website veröffentlichen, oder aber
2) über ein zwischengeschaltetes Chiffrier-Skript vor dem Besucher verbergen.
Ich habe mich für den zweiten Weg entschlossen, um Ihren Gästen zu ermöglichen, Ihre e-mail-Adressen zu verbergen. Wenn die Option email-Adressen chiffrieren (unter Filter im Administrationsprogramm) aktiviert, bzw. der Eintrag $email_protection = true; in der Datei globals.inc.php gesetzt ist, erscheint im Eingabeformular von Jax Guestbook ein Kontrollkästchen, über das der Gast selbst auswählen kann, ob seine e-mail-Adresse versteckt oder ganz normal angezeigt werden soll. (standardmäßig wird die email-Adresse versteckt)
Wird die Adresse versteckt, dann kann ein Leser des Gästebuchs die e-mail nicht direkt über seinen e-mail-Client (z.B. Outlook) verschicken, sondern muss zum Versenden ein Formular auf der Webseite benutzen. (Formmailer)
Der Formmailer von Jax Guestbook wird mit der verschlüsselten e-mail-Adresse des Empfängers aufgerufen. Alle eingegebenen Daten werden an den Empfänger weitergeleitet.
Der Formmailer ist ein Hack (Schnellanpassung) von Jax Formailer 1.0. Um Fehlermeldungen zu vermeiden, müssen Sie wie bei den Gästebuch-CSV-Dateien die Datei logfile.csv für den Schreibzugriff freigeben (siehe Datei-Zugriffsrechte)
Das Aussehen des Formmailers können Sie über das Stylesheet im Verzeichnis formmailer/styles anpassen!
Wenn statt des Formmailers ein weißer Bildschirm angezeigt wird, ist die Variable $refer_from = ...; in der Datei globals.inc.php falsch gesetzt. Standardmäßig wird sie auf den Namen der Website gesetzt, auf der Jax Guestbook läuft.. Sie können diese Variable zur Not per Hand auf den Pfad setzen, in dem sich Ihr Gästebuch befindet...
Zur Zeit teste ich das Skript auf meiner Website. Momentan verwaltet es über 1000 Einträge im CSV-Format. Theoretisch müsste das Skript (je nach verfügbarer Rechenzeit/-leistung und Datenquelle) problemlos mehrere 1000 Gästebucheinträge verwalten können. Für größere Gästebücher bietet sich die Verwendung von MySQL als Datenquelle an...
Jax Guestbook speichert nur einen Eintrag, bzw. zeigt immer den gleichen
Eintrag an!
Sie haben wahrscheinlich nicht die Beispieltabellen
(im admin-Verzeichnis) verwendet, und vergessen das Feld "id"
(Pflichtfeld!!) anzulegen
Jax Guestbook verwendet zum Versenden der Benachrichtigungs-e-mails und für
den Formmailer die PHP-interne Funktion mail().
Diese Funktion ist von der korrekten Einstellung des SMTP-Parameter in der PHP-Konfigurationsdatei
abhängig. Wenden Sie sich bei Problemen mit dem e-mail-Versand bitte an
Ihren Provider!
Anstatt des Formmailers wird nur ein leerer weißer Bildschirm angezeigt.
Dieser Fehler tritt dann auf, wenn der SPAM-Schutz des Formmailers aktiviert ist, und der HTTP_REFERER nicht mit der Variable $refer_from in der Datei globals.inc.php des Gästebuchs übereinstimmt. Ändern Sie die Zeile
dann per Hand in
Wenn auch das nichts bringt, bleibt Ihnen nur noch, den SPAM-Schutz in der globals.inc.php des Formmailers abzuschalten:
Wichtiger Hinweis zur Sicherheit:
Falls Sie die Protokollfunktion des Formmailers nutzen möchten, achten Sie bitte darauf, dass der Verzeichnisindex für das Verzeichnis in dem die Protokolldatei liegt gesperrt ist und dass Sie nicht den Standarddateinamen (logfile.csv) benutzen, da sonst externe Besucher die komplette Protokolldatei auslesen könnten.
Den Dateinamen für die Protkolldatei können Sie in der globals.inc.php des Formmailers ändern!
$formmailer[0]->logfile = "logfile.csv";
Sollten Sie Fehler finden, oder haben Sie Fragen oder Verbesserungsvorschläge, zögern Sie bitte nicht, und wenden Sie sich einfach direkt an mich!
Berlin, 15.05.2003 - Jack (tR)