Ich öffne mal hier einen neuen thread zum Thema Spam im Akobook durch Einzelne unliebsame Zeitgenossen (nicht automatischer Spam).
Akobook 3.42 auf Mambo 4.5.2
Mein bisheriges Problem:
Einzelner User terrorisiert das Gästebuch.
(spamfix verhindert ja nur automatische Eintragungen und außerdem gab es bei mir browserabhängig den Fehler, dass der eingegebene Code angeblich falsch war, obwohl er dem Angezeigten entsprach)
Mein bestehendes Problem: mangelnde PHP-Kenntnisse
Was ich nicht haben wollte:
- postings manuell freischalten müssen;
- eine Zugangssperre im Hinblick auf die benutzte ip, da zu auffällig und folglich leicht umgehbar;
Was ich haben wollte:
- einen automatischen Scan auf bestimmte Worte;
- einen automatischen Scan auf bestimmte IP;
- automatische (Ver-/)Nichtveröffentlichung, wenn Wort bzw. IP (nicht) vorkommt;
Meine Lösung ist aufgrund meiner mangelnden php-Kenntnisse keineswegs sauber oder besonders origenell, aber sie erfüllt meine Wünsche:
(1) ich habe zunächst diese Komponente installiert:
Badwords2 Text Filtering/Flushing Component - Version 1.0 BETA
(
http://www.schoolastech.com/ )
(auch wenn ich Zensurprogramme bedenklich finde - es kommt aber auf die Nutzung an)
(2) Dann habe ich den dazugehörigen Hack für das akobook 3.42 nach der im zip-file enthaltenen Anleitung integriert
(
http://www.schoolastech.com/ )
ACHTUNG: Die neue akobook.php ist ohne die SPAMFIX-Ergänzungen.
(Jetzt würden unerwünschte Worte in einem Akobook-Eintrag einfach nur durch Sternchen ersetzt, im übrigen aber veröffentlicht, soweit autopublish eingeschaltet ist)
(3) Und anschließend habe ich in der Datei akobook.php im Ordner /component/com_akobook folgendes geändert:
Zeilen 169-188 vorher:
PHP Code:
if ($ab_autopublish) {
$query2 .= ",published='1'";
}
$database->setQuery( $query2 );
$database->query();
//Filter Bad words
if ( $ab_badwords2 && ( ( $ab_notify AND is_email($ab_notify_email) ) || ( $ab_thankuser AND is_email($gbmail) ) ) ) {
require_once( 'components/com_badwords2/class.badwords2.php' );
$badword_flag = Badword::filter ( "$gbname $gbtext", $my );
if ($badword_flag) {
$gbname_flush = Badword::flush($gbname, $my);
$gbtext_flush = Badword::flush($gbtext, $my);
}
}
if ($ab_notify AND is_email($ab_notify_email) ) {
$gbmailtext = _GUESTBOOK_ADMINMAIL;
if ( $badword_flag ) { $gbmailtext .= _BW2_MODERATED_ENTRY_MAIL . _BW2_ADMIN_ORIG_ENTRY_NOTIF_MAIL; }
$gbmailtext .= "\r\n\r\nIP: ".$gbip."\r\n\r\nName: ".$gbname."\r\nText: ".$gbtext;
Zeilen 169-191 nachher:
PHP Code:
if ($ab_autopublish) {
$query2 .= ",published='1'";
}
// $database->setQuery( $query2 );
// $database->query();
//Filter Bad words
if ( $ab_badwords2 && ( ( $ab_notify AND is_email($ab_notify_email) ) || ( $ab_thankuser AND is_email($gbmail) ) ) ) {
require_once( 'components/com_badwords2/class.badwords2.php' );
$badword_flag = Badword::filter ( "$gbname $gbtext $gbip", $my );
if ($badword_flag) {
// $gbname_flush = Badword::flush($gbname, $my);
// $gbtext_flush = Badword::flush($gbtext, $my);
$query2 .= ",published='0'";
}
}
$database->setQuery( $query2 );
$database->query();
if ($ab_notify AND is_email($ab_notify_email) ) {
$gbmailtext = _GUESTBOOK_ADMINMAIL;
if ( $badword_flag ) { $gbmailtext .= _BW2_MODERATED_ENTRY_MAIL . _BW2_ADMIN_ORIG_ENTRY_NOTIF_MAIL; }
$gbmailtext .= "\r\n\r\nIP: ".$gbip."\r\n\r\nName: ".$gbname."\r\nText: ".$gbtext;
In dieser Zeile
$badword_flag = Badword::filter ( "$gbname $gbtext $gbip", $my );
ist eingestellt, dass auch die IP des Gästebuch-Eintrages dem badwords-Check unterzogen wird.
Außerdem wird in der email-Benachrichtigung an mich auch die IP des Eintragenden ausgegeben.
(4) Dann noch die badwords - Komponente gefüttert:
Bei den IP-Adressen reicht die Angabe von z.B. 255.255.11 um den gesamten Bereich von 255.255.110.*** bis 255.255.119.*** zu verbannen.
Bei den Worten eben alles, was kennzeichnend für den Störenfried ist, aber in anderen Beiträgen nicht vorkommen wird.
Im letzten Punkt liegt auch ein Problem: Die Worte sollten überlegt gewählt werden, damit es keine Unschuldigen trifft.
ACHTUNG: In der bisherigen Form werden die Einträge gar nicht in der Datenbank gespeichert!!! Ein nachträgliches Freischalten ist also nicht möglich. Der einzige Hinweis auf einen ausgefilterten Eintrag ist die email an den Gästebuch-Administrator.
Hier bedarf es wohl noch ein paar Anpassungen... wer hilft?