Seite 1 von 1

Gelöschte Beiträge vs. Freigabe

Verfasst: 30.04.2015 12:45
von Eisbär
Hallo,

hatte vor einer ganzen Weile eine gewisse Spamflut zu bewältigen.
Einfacher fand ich es die Spamer und ihre Beiträge direkt in der DB zu löschen,
denn es waren tausende verschiedene User und Beiträge.

Nun hab ich leider immer noch das Problem, das in den Foren angezeigt wird,
das Beiträge auf Freigabe warten, obwohl es die ja nicht mehr gibt.
Im Moderationsbereich sind auch keine Einträge vorhanden.

Update von 3.0.12 auf 3.13 hat leider auch keinen Erfolg gebracht.

Kennt jemand eine Lösung?

Re: Gelöschte Beiträge vs. Freigabe

Verfasst: 30.04.2015 19:51
von Talk19zehn
Hi,
Eisbär hat geschrieben:...(...)... Einfacher fand ich es die Spamer und ihre Beiträge direkt in der DB zu löschen, denn es waren tausende verschiedene User und Beiträge. ...(...)... Nun hab ich leider immer noch das Problem, das in den Foren angezeigt wird, das Beiträge auf Freigabe warten, obwohl es die ja nicht mehr gibt. ...(...)...
aus meiner Sicht, ist niemals die Löschung über die DB zwingend erfolgreich. Die eigenen phpBB-Konstrukte *via ACP sind in derartigen Fällen mächtig und hilfreich. Davon sollte man, meiner Erfahrung nach, nicht abweichen. Jener *Tipp phpBB-3.0: "(Spam)-Benutzer via ACP löschen .." sei daher nochmals genannt. Okay das hilft dir jetzt wahrscheinlich nicht. Inwieweit man dein Vorgehen retten kann, stellt tatsächlich Rätsel auf.

Hoffen wir darauf, dass ein "Insider" weiterhelfen kann. Da mich das Thema auch grundsätzlich interessiert, "schiebe" ich mal, --> es sei bitte erlaubt ... :wink:

Grüße

Re: Gelöschte Beiträge vs. Freigabe

Verfasst: 05.05.2015 10:54
von gn#36
Probier es erst mal mit den Resynchronisationsmethoden im ACP. Die Reparieren eine ganze Menge Schäden.

Reicht das nicht, solltest du die zu den Beiträgen wohl gehörenden, aber nun leeren Themen am besten ebenfalls entfernen (Achtung: Backup machen!) Es kann aber in noch viel mehr Tabellen inkonsistenzen geben, z.B. Beitragsbenachrichtigungen, last post im Forum

Achtung, dieses Query ist vermutlich extrem langsam, weil es die Select Abfrage für jedes Thema in deiner Datenbank ein mal ausführen muss.

Code: Alles auswählen

DELETE FROM phpbb_topics t WHERE 0 == (
SELECT count(post_id) FROM phpbb_posts p
WHERE p.topic_id = t.topic_id )
Möglicherweise geht das auch besser so (besonders schnell ist das denke ich aber auch nicht):

Code: Alles auswählen

DELETE FROM phpbb_topics t WHERE t.topic_id NOT IN (
SELECT DISTINCT p.topic_id FROM phpbb_posts p 
)
Beide Varianten sollten die Datenbank nach Themen durchforsten, zu denen keine Beiträge existieren. Ich habe beides aber nicht getestet, also auf jeden Fall vorher ein komplettes Backup machen! Wenn die Queries aufgrund des Zeitlimits für PHP abbrechen musst du ggf. dein Forum sperren, ein Backup machen, das Query lokal ausführen, wieder ein Backup machen und selbiges auf dem Server wieder einspielen.

Anschließend auf jeden Fall wieder neu synchronisieren, ggf. passen ja auch Links auf nicht mehr vorhandene Themen in den Forendaten nicht mehr. Ich bin mir gerade nicht ganz sicher, ob da auch solche Fehler repariert werden. Ansonsten müssen wir mal schauen, was danach noch defekt ist.