Bots aus phpbb3 löschen

Erinnert sich noch jemand an den selbst gebauten Spamschutz für PhpBB3?

Der Trick dort war, bei der Anmeldung mit einem benutzerdefinierten Profilfeld einen bestimmten Wert abzufragen (“Bist du ein Bot?” – “Nein”).

Es gibt mittlerweile ein Q&A Captcha, das ähnliches tut, ist bei mir in der aktuellen Version aber nicht zum laufen zu bekommen.

Mal angenommen, man hätte das Profilfeld schon seit Anfang an am Einsatz und möchte Benutzer-Accounts samt ihrer Beiträge löschen, welche diesen Check nicht bestanden haben.

Dann wäre folgendes Script hilfreich:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
include($phpbb_root_path . 'includes/functions_user.' . $phpEx);

// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup('search');

        $sql = 'SELECT u.username, p.* FROM `phpbb_profile_fields_data` p, phpbb_users u WHERE u.user_id = p.user_id AND p.pf_spam != "nein" ORDER BY u.user_id';
        $result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
{
echo $row["user_id"] . " with name " . $row["username"] ;
echo "<br />";
user_delete('remove', $row["user_id"]);
}


?>

Das ganze muss im Root Verzeichnis von PhpBB3 abgespeichert werden, da die eingebauten Funktionen für die Datenbank+User-Managment verwendet wird.

Angepasst werden muss der Name des Profil-Feldes (hier “pf_spam”) und eben der verlangte Wert. Viel Spaß.