• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> Klick

Gästebuch

Lovecraft

Uelzener Rambour
Registriert
21.04.08
Beiträge
374
Hi,


Ich habe meine Website fertig und suche 'ne gute Webadresse für Gästebücher.

Wie baut man die ein bzw. integriert sie in's Script?

Was haltet ihr von Google Analytics...

Vielen Dank
 

Maluku

Finkenwerder Herbstprinz
Registriert
10.05.08
Beiträge
464
Mittlerweile vertrete ich sogar die Meinung, dass man sein Gästebuch selbst schreiben sollte, weil es dann weniger wahrscheinlich ist, dass ein automatisches Skript das Gästebuch zuspammt.
Wichtig ist vor allem eine Moderationsfunktion.
 

macsterzel

Meraner
Registriert
18.09.04
Beiträge
230
Mittlerweile vertrete ich sogar die Meinung, dass man sein Gästebuch selbst schreiben sollte, weil es dann weniger wahrscheinlich ist, dass ein automatisches Skript das Gästebuch zuspammt.
Wichtig ist vor allem eine Moderationsfunktion.

…und weiter? Ich mein, sehr interessant - aber keine Vorschläge, Links oder sonstiges?
 

Lovecraft

Uelzener Rambour
Registriert
21.04.08
Beiträge
374
Danke macsterzel...vor einer persönlichen Meinung sollte erstmal die gestellte Frage beantwortet werden.

Also bitte Vorschläge, Links und was haltet ihr von Google Analytics?
 

Maluku

Finkenwerder Herbstprinz
Registriert
10.05.08
Beiträge
464
Vielleicht das hier:
http://www.hardcoder.com/scripting/php/guestbook/code.php

Wie gesagt es gibt mittlerweile für jedes Gästebuch und Forum was einigermaßen bekannt ist ein Bot der es vollspammen kann, deswegen kann ich keins guten Herzens empfehlen. Am Besten ist es selbst eins zu programmieren und zu hoffen dass keiner es für wichtig genug befindet einen Bot dafür zu schreiben.

Wichtigeste Punkte die zu beachten sind:
Die Beiträge sollten moderiert werden.
Die Texte die die Benutzer eingeben (auch deren Name) muss "escaped" werden. Sodass kein Javascript oder HTML funktioniert. (Wenn jemand <img src="COM1"> eingibt muss auch in dem Ausgabequellcode &gt;img src=&quot;COM1=&quot;$lt; stehen.

Wenn du das Gästebuch an eine Datenbank anbinden willst, muss du noch beachten, dass kein eingebener Text SQL Befehle eingeben kann.

Von Google analytics halte ich nix, deswegen ist die IP und DNS von denen bei mir gesperrt.
 

Maluku

Finkenwerder Herbstprinz
Registriert
10.05.08
Beiträge
464
Hier ist mein letztes Gästebuch das ich geschrieben hatte, allerdings benutzt das keine Datenbank, ist in Perl und benutzt ein globales Backend für Templates.

Aber vielleicht hilft es ja bei einigen Problemen.

Code:
[COLOR=#a020f0]#!/usr/bin/perl[/COLOR]
[COLOR=#804040][B]use warnings[/B][/COLOR];
[COLOR=#804040][B]use strict[/B][/COLOR];
[COLOR=#804040][B]require[/B][/COLOR] Webgraph;
[COLOR=#804040][B]my[/B][/COLOR] [COLOR=#008080]$q[/COLOR]=[COLOR=#804040][B]new[/B][/COLOR] Webgraph([COLOR=#ff00ff]"[/COLOR][COLOR=#ff00ff]G&amp;auml;stebuch[/COLOR][COLOR=#ff00ff]"[/COLOR]);
[COLOR=#804040][B]print[/B][/COLOR] [COLOR=#008080]$q[/COLOR]->top;
[COLOR=#804040][B]my[/B][/COLOR] [COLOR=#008080]%book[/COLOR]=[COLOR=#008080]$q[/COLOR]->[COLOR=#804040][B]read[/B][/COLOR]([COLOR=#ff00ff]"[/COLOR][COLOR=#ff00ff]guestbook[/COLOR][COLOR=#ff00ff]"[/COLOR]);
[COLOR=#008080]$book[/COLOR]{Guestbook}=[] [COLOR=#804040][B]unless[/B][/COLOR] [COLOR=#008080]$book[/COLOR]{Guestbook} [COLOR=#804040][B]and[/B][/COLOR] [COLOR=#804040][B]ref[/B][/COLOR] [COLOR=#008080]$book[/COLOR]{Guestbook} [COLOR=#804040][B]eq[/B][/COLOR] [COLOR=#ff00ff]"[/COLOR][COLOR=#ff00ff]ARRAY[/COLOR][COLOR=#ff00ff]"[/COLOR];

[COLOR=#804040][B]if[/B][/COLOR] ([COLOR=#008080]$q[/COLOR]->cgiparam([COLOR=#ff00ff]"[/COLOR][COLOR=#ff00ff]Text[/COLOR][COLOR=#ff00ff]"[/COLOR]) [COLOR=#804040][B]and[/B][/COLOR] [COLOR=#008080]$q[/COLOR]->cgiparam([COLOR=#ff00ff]"[/COLOR][COLOR=#ff00ff]Name[/COLOR][COLOR=#ff00ff]"[/COLOR])) {
        [COLOR=#804040][B]unshift[/B][/COLOR] @{[COLOR=#008080]$book[/COLOR]{Guestbook}},{[COLOR=#ff00ff]Text[/COLOR]=>[COLOR=#008080]$q[/COLOR]->cgiparam([COLOR=#ff00ff]"[/COLOR][COLOR=#ff00ff]Text[/COLOR][COLOR=#ff00ff]"[/COLOR]),[COLOR=#ff00ff]Time[/COLOR]=>[COLOR=#804040][B]time[/B][/COLOR],[COLOR=#ff00ff]Name[/COLOR]=>[COLOR=#008080]$q[/COLOR]->cgiparam([COLOR=#ff00ff]"[/COLOR][COLOR=#ff00ff]Name[/COLOR][COLOR=#ff00ff]"[/COLOR]),[COLOR=#ff00ff]active[/COLOR]=>[COLOR=#008080]$q[/COLOR]->check([COLOR=#ff00ff]"[/COLOR][COLOR=#ff00ff]Settings[/COLOR][COLOR=#ff00ff]"[/COLOR],[COLOR=#ff00ff]"[/COLOR][COLOR=#ff00ff]Guestbook[/COLOR][COLOR=#ff00ff]"[/COLOR])};
        [COLOR=#008080]$q[/COLOR]->[COLOR=#804040][B]write[/B][/COLOR]([COLOR=#ff00ff]"[/COLOR][COLOR=#ff00ff]guestbook[/COLOR][COLOR=#ff00ff]"[/COLOR],[COLOR=#008080]\%book[/COLOR]);
}
[COLOR=#804040][B]if[/B][/COLOR] ([COLOR=#008080]$q[/COLOR]->check([COLOR=#ff00ff]"[/COLOR][COLOR=#ff00ff]Settings[/COLOR][COLOR=#ff00ff]"[/COLOR],[COLOR=#ff00ff]"[/COLOR][COLOR=#ff00ff]Guestbook[/COLOR][COLOR=#ff00ff]"[/COLOR])) {
        [COLOR=#804040][B]if[/B][/COLOR] ([COLOR=#804040][B]defined[/B][/COLOR] [COLOR=#008080]$q[/COLOR]->cgiparam([COLOR=#ff00ff]"[/COLOR][COLOR=#ff00ff]delete[/COLOR][COLOR=#ff00ff]"[/COLOR])) {
                [COLOR=#804040][B]splice[/B][/COLOR] @{[COLOR=#008080]$book[/COLOR]{Guestbook}},[COLOR=#008080]$q[/COLOR]->cgiparam([COLOR=#ff00ff]"[/COLOR][COLOR=#ff00ff]delete[/COLOR][COLOR=#ff00ff]"[/COLOR]),[COLOR=#ff00ff]1[/COLOR];
                [COLOR=#008080]$q[/COLOR]->[COLOR=#804040][B]write[/B][/COLOR]([COLOR=#ff00ff]"[/COLOR][COLOR=#ff00ff]guestbook[/COLOR][COLOR=#ff00ff]"[/COLOR],[COLOR=#008080]\%book[/COLOR]);
                [COLOR=#008080]%book[/COLOR]=[COLOR=#008080]$q[/COLOR]->[COLOR=#804040][B]read[/B][/COLOR]([COLOR=#ff00ff]"[/COLOR][COLOR=#ff00ff]guestbook[/COLOR][COLOR=#ff00ff]"[/COLOR]);
        }
        [COLOR=#804040][B]if[/B][/COLOR] ([COLOR=#804040][B]defined[/B][/COLOR] [COLOR=#008080]$q[/COLOR]->cgiparam([COLOR=#ff00ff]"[/COLOR][COLOR=#ff00ff]activate[/COLOR][COLOR=#ff00ff]"[/COLOR])) {
                [COLOR=#008080]$book[/COLOR]{Guestbook}->[[COLOR=#804040][B]int[/B][/COLOR]([COLOR=#008080]$q[/COLOR]->cgiparam([COLOR=#ff00ff]"[/COLOR][COLOR=#ff00ff]activate[/COLOR][COLOR=#ff00ff]"[/COLOR]))]->{active}=[COLOR=#ff00ff]1[/COLOR];
                [COLOR=#008080]$q[/COLOR]->[COLOR=#804040][B]write[/B][/COLOR]([COLOR=#ff00ff]"[/COLOR][COLOR=#ff00ff]guestbook[/COLOR][COLOR=#ff00ff]"[/COLOR],[COLOR=#008080]\%book[/COLOR]);
        }
        [COLOR=#804040][B]my[/B][/COLOR] [COLOR=#008080]$page[/COLOR]=[COLOR=#008080]$q[/COLOR]->get_template([COLOR=#ff00ff]"[/COLOR][COLOR=#ff00ff]GuestbookList[/COLOR][COLOR=#ff00ff]"[/COLOR]);
        [COLOR=#804040][B]my[/B][/COLOR] [COLOR=#008080]$lines[/COLOR]=[COLOR=#ff00ff]""[/COLOR];
        [COLOR=#804040][B]foreach[/B][/COLOR] ([COLOR=#ff00ff]0[/COLOR] .. [COLOR=#008080]$#[/COLOR]{[COLOR=#008080]$book[/COLOR]{Guestbook}}) {
                [COLOR=#804040][B]my[/B][/COLOR] [COLOR=#008080]$ml[/COLOR]=[COLOR=#008080]$q[/COLOR]->get_template([COLOR=#ff00ff]"[/COLOR][COLOR=#ff00ff]GuestbookEntryAdmin[/COLOR][COLOR=#ff00ff]"[/COLOR]);
                [COLOR=#804040][B]my[/B][/COLOR] [COLOR=#008080]$l[/COLOR]=[COLOR=#008080]$q[/COLOR]->get_template([COLOR=#ff00ff]"[/COLOR][COLOR=#ff00ff]GuestbookEntryDisabled[/COLOR][COLOR=#ff00ff]"[/COLOR]);
                [COLOR=#008080]$l[/COLOR]=[COLOR=#008080]$ml[/COLOR] [COLOR=#804040][B]if[/B][/COLOR] [COLOR=#008080]$book[/COLOR]{Guestbook}->[[COLOR=#008080]$_[/COLOR]]->{active};
                [COLOR=#008080]$l[/COLOR]=~[COLOR=#804040][B]s/[/B][/COLOR][COLOR=#6a5acd]\[[/COLOR][COLOR=#ff00ff]Name[/COLOR][COLOR=#6a5acd]\][/COLOR][COLOR=#804040][B]/[/B][/COLOR][COLOR=#008080]$book[/COLOR][COLOR=#ff00ff]{Guestbook}->[[/COLOR][COLOR=#008080]$_[/COLOR][COLOR=#ff00ff]]->{Name}[/COLOR][COLOR=#804040][B]/gi[/B][/COLOR];
                [COLOR=#008080]$l[/COLOR]=~[COLOR=#804040][B]s/[/B][/COLOR][COLOR=#6a5acd]\[[/COLOR][COLOR=#ff00ff]Text[/COLOR][COLOR=#6a5acd]\][/COLOR][COLOR=#804040][B]/[/B][/COLOR][COLOR=#008080]$book[/COLOR][COLOR=#ff00ff]{Guestbook}->[[/COLOR][COLOR=#008080]$_[/COLOR][COLOR=#ff00ff]]->{Text}[/COLOR][COLOR=#804040][B]/gi[/B][/COLOR];
                [COLOR=#008080]$l[/COLOR]=~[COLOR=#804040][B]s/[/B][/COLOR][COLOR=#6a5acd]\[[/COLOR][COLOR=#ff00ff]ID[/COLOR][COLOR=#6a5acd]\][/COLOR][COLOR=#804040][B]/[/B][/COLOR][COLOR=#008080]$_[/COLOR][COLOR=#804040][B]/gi[/B][/COLOR];
                [COLOR=#008080]$lines[/COLOR].=[COLOR=#008080]$l[/COLOR];
        }
        [COLOR=#008080]$page[/COLOR]=~[COLOR=#804040][B]s/[/B][/COLOR][COLOR=#6a5acd]\[[/COLOR][COLOR=#ff00ff]Lines[/COLOR][COLOR=#6a5acd]\][/COLOR][COLOR=#804040][B]/[/B][/COLOR][COLOR=#008080]$lines[/COLOR][COLOR=#804040][B]/gi[/B][/COLOR];
        [COLOR=#804040][B]print[/B][/COLOR] [COLOR=#008080]$page[/COLOR];
        
}
[COLOR=#804040][B]else[/B][/COLOR] {
        [COLOR=#804040][B]my[/B][/COLOR] [COLOR=#008080]$page[/COLOR]=[COLOR=#008080]$q[/COLOR]->get_template([COLOR=#ff00ff]"[/COLOR][COLOR=#ff00ff]GuestbookList[/COLOR][COLOR=#ff00ff]"[/COLOR]);
        [COLOR=#804040][B]my[/B][/COLOR] [COLOR=#008080]$lines[/COLOR];
        [COLOR=#804040][B]foreach[/B][/COLOR] ([COLOR=#ff00ff]0[/COLOR] .. [COLOR=#008080]$#[/COLOR]{[COLOR=#008080]$book[/COLOR]{Guestbook}}) {
                [COLOR=#804040][B]next[/B][/COLOR] [COLOR=#804040][B]unless[/B][/COLOR]  [COLOR=#008080]$book[/COLOR]{Guestbook}->[[COLOR=#008080]$_[/COLOR]]->{active};
                [COLOR=#804040][B]my[/B][/COLOR] [COLOR=#008080]$l[/COLOR]=[COLOR=#008080]$q[/COLOR]->get_template([COLOR=#ff00ff]"[/COLOR][COLOR=#ff00ff]GuestbookEntry[/COLOR][COLOR=#ff00ff]"[/COLOR]);
                [COLOR=#008080]$l[/COLOR]=~[COLOR=#804040][B]s/[/B][/COLOR][COLOR=#6a5acd]\[[/COLOR][COLOR=#ff00ff]Name[/COLOR][COLOR=#6a5acd]\][/COLOR][COLOR=#804040][B]/[/B][/COLOR][COLOR=#008080]$book[/COLOR][COLOR=#ff00ff]{Guestbook}->[[/COLOR][COLOR=#008080]$_[/COLOR][COLOR=#ff00ff]]->{Name}[/COLOR][COLOR=#804040][B]/gi[/B][/COLOR];
                [COLOR=#008080]$l[/COLOR]=~[COLOR=#804040][B]s/[/B][/COLOR][COLOR=#6a5acd]\[[/COLOR][COLOR=#ff00ff]Text[/COLOR][COLOR=#6a5acd]\][/COLOR][COLOR=#804040][B]/[/B][/COLOR][COLOR=#008080]$book[/COLOR][COLOR=#ff00ff]{Guestbook}->[[/COLOR][COLOR=#008080]$_[/COLOR][COLOR=#ff00ff]]->{Text}[/COLOR][COLOR=#804040][B]/gi[/B][/COLOR];
                [COLOR=#008080]$l[/COLOR]=~[COLOR=#804040][B]s/[/B][/COLOR][COLOR=#6a5acd]\[[/COLOR][COLOR=#ff00ff]ID[/COLOR][COLOR=#6a5acd]\][/COLOR][COLOR=#804040][B]/[/B][/COLOR][COLOR=#008080]$_[/COLOR][COLOR=#804040][B]/gi[/B][/COLOR];
                [COLOR=#008080]$lines[/COLOR].=[COLOR=#008080]$l[/COLOR];
        }
        [COLOR=#008080]$page[/COLOR]=~[COLOR=#804040][B]s/[/B][/COLOR][COLOR=#6a5acd]\[[/COLOR][COLOR=#ff00ff]Lines[/COLOR][COLOR=#6a5acd]\][/COLOR][COLOR=#804040][B]/[/B][/COLOR][COLOR=#008080]$lines[/COLOR][COLOR=#804040][B]/gi[/B][/COLOR];
        [COLOR=#804040][B]print[/B][/COLOR] [COLOR=#008080]$page[/COLOR];
}
[COLOR=#804040][B]print[/B][/COLOR] [COLOR=#008080]$q[/COLOR]->end;
Erklärung:

Der erste Teil (if cgiparam("Text ...)) Trägt neue Einträge ein.
Der zweite Teil überprüft auf Admin Rechte (check("Settings")) und der dritte Teil (else) Zeigt den Inhalt des Gästebuchs an, wenn kein Admin angemeldet ist.