没有php的PHPBB3大规模用户删除

时间:2014-01-14 14:18:22

标签: php mysql phpbb

目前我遇到了一个严重的问题,在几天之内,论坛垃圾邮件发送者已经破坏了我的phpbb3论坛并发布了如此多的主题和帖子,这对ACP群众剪辑功能来说太过分了(它总是失去记忆,我不能多给它。)

所以,我想知道,他们是从数据库本身删除这些用户和帖子的方法,所以我不需要任何php交互?或者用Perl / Python编写的phpbb用户修剪函数可以随着时间的推移运行吗?

我在网上搜索过,每个网站都说“使用ACP”,但此刻对我来说是不可能的。

1 个答案:

答案 0 :(得分:3)

执行此操作的半手动方式是转到每个垃圾邮件用户的个人资料,选择Administer User,然后在Overview(默认)页面的底部,选择Delete Posts 。这将删除该特定用户及其所有相关主题。这是推荐的方式。

另一个选择是减少修剪用户页面上的条件。设置较小的日期窗口,设置更具体的帖子标准等。

如果上述方法不起作用,则此topic也会指出一些可能有用的非常危险的查询,但它只会删除没有关联用户的主题。如果您运行查询并且超时,则可能出现这种情况。查询的一部分已运行。

请记住,PHPBB NOT 建议直接运行查询。我提供的前两个选项是他们推荐的删除大量用户和帖子的方法。对您的数据库运行危险(翻译:先备份)

查询1 - 删除搜索结果:

delete from phpbb_search_wordmatch where post_id in
(SELECT post_id
    FROM `phpbb_posts`
    WHERE topic_id
    IN (
       SELECT topic_id
       FROM phpbb_topics
       WHERE `topic_poster` NOT
       IN (
           SELECT user_id
           FROM phpbb_users
       )
    )
)

查询2 - 删除主题:

DELETE
FROM `phpbb_topics`
WHERE `topic_poster` NOT
IN (
    SELECT user_id
    FROM phpbb_users
)

查询3 - 删除帖子:

DELETE
FROM `phpbb_posts`
WHERE topic_id
IN (
    SELECT topic_id
    FROM phpbb_topics
    WHERE `topic_poster` NOT
    IN (
        SELECT user_id
        FROM phpbb_users
    )
)