Bin dazu übergegangen, alle user die ihren account 3 tage nach der registrierung nicht aktiviert haben, per SQL-statement aus der datenbank zu killen. angezeigt in der userliste werden nur mehr die bereits aktivierten accounts. damit ist der reiz für die spammer dahin ihre webseiten über die homepage-links im benutzerprofil zu publizieren.
Hier die Code-Samples:
Eingebaut in die functions.php im includes-verzeichnis
//
// Delete inactive users after 3 days (= 259200 seconds)
//
function delete_inactiveusers()
{
global $db;
$compare_date = time() - 259200;
$sql = "DELETE FROM " . USERS_TABLE . " WHERE user_id>=0 AND user_active=0 AND user_regdate<" . $compare_date;
$result = $db->sql_query($sql);
}
Der Aufruf erfolgt in der common.php wie folgt:
include($phpbb_root_path . 'includes/constants.'.$phpEx);
include($phpbb_root_path . 'includes/template.'.$phpEx);
include($phpbb_root_path . 'includes/sessions.'.$phpEx);
include($phpbb_root_path . 'includes/auth.'.$phpEx);
include($phpbb_root_path . 'includes/functions.'.$phpEx);
include($phpbb_root_path . 'includes/db.'.$phpEx);
//
//function call
//
$temp = delete_inactiveusers();
Änderung in der memberlist.php zur Anzeige der aktivierten Benutzer:
/* Original SQL-string
$sql = "SELECT username, user_id, user_viewemail, user_posts, user_regdate, user_from, user_website, user_email, user_icq, user_aim, user_yim, user_msnm, user_avatar, user_avatar_type, user_allowavatar
FROM " . USERS_TABLE . "
WHERE user_id <> " . ANONYMOUS . "
ORDER BY $order_by";
*/
$sql = "SELECT username, user_id, user_viewemail, user_posts, user_regdate, user_from, user_website, user_email, user_icq, user_aim, user_yim, user_msnm, user_avatar, user_avatar_type, user_allowavatar
FROM " . USERS_TABLE . "
WHERE user_active = 1
ORDER BY $order_by";
Ich weiß, quick and dirty, aber es wirkt
Seither keine Spam-Accounts mehr.
greets,
stef