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.
[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ä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;
Wir verwenden essentielle Cookies, damit diese Website funktioniert, und optionale Cookies, um den Komfort bei der Nutzung zu verbessern.
Für die Ihnen angezeigten Verarbeitungszwecke können Cookies, Geräte-Kennungen oder andere Informationen auf Ihrem Gerät gespeichert oder abgerufen werden.
Anzeigen und Inhalte können basierend auf einem Profil personalisiert werden. Es können mehr Daten hinzugefügt werden, um Anzeigen und Inhalte besser zu personalisieren. Die Performance von Anzeigen und Inhalten kann gemessen werden. Erkenntnisse über Zielgruppen, die die Anzeigen und Inhalte betrachtet haben, können abgeleitet werden. Daten können verwendet werden, um Benutzerfreundlichkeit, Systeme und Software aufzubauen oder zu verbessern.
Durch das Klicken des Buttons "Zustimmen" willigen Sie gem. Art. 49 Abs. 1 DSGVO ein, dass auch Anbieter in den USA Ihre Daten verarbeiten. In diesem Fall ist es möglich, dass die übermittelten Daten durch lokale Behörden verarbeitet werden.