Mitglieder mit 0 Posts löschen?

Probleme bei der regulären Arbeiten mit phpBB, Fragen zu Vorgehensweisen oder Funktionsweise sowie sonstige Fragen zu phpBB im Allgemeinen.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.1, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
chrisredfield_0

Mitglieder mit 0 Posts löschen?

Beitrag von chrisredfield_0 »

Hi!

Weiß jemand wie man Mitglieder mit 0 Posts löschen kann? Vielleicht auch mit phpmyadmin oder so.. Kenn' mich da nicht so gut aus aber jeder hilfe wär' super!
Benutzeravatar
itst
Ehrenadmin
Beiträge: 7418
Registriert: 21.08.2001 02:00
Wohnort: Büttelborn bei Darmstadt
Kontaktdaten:

Beitrag von itst »

Du musst nur die Query anpassen, die ich mit einem Kommentar markiert habe.

Ohne Gewähr :-)

Code: Alles auswählen

<?php
define('IN_PHPBB', true);
$phpbb_root_path = '../';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);

$p = $c = 0;

$con = mysql_connect ($dbhost, $dbuser, $dbpasswd);
mysql_select_db($dbname);

$now = time();
$days = 90;
$quar = $now - (86400*$days);

// diese query anpassen, um die user auszuwählen, die gelöscht werden sollen.
$sql = "select user_id, username, user_email, user_lastvisit, user_regdate, user_posts from " . $table_prefix . "users where user_id >0 and (user_regdate<=$quar and user_lastvisit<=$quar)";

$res = mysql_query($sql);
echo "$days Tage sind seit dem " . gmdate("d.M.Y", $quar) . " vorbei. Timestamp für diesen Tag: $quar.<br /><br />";
echo "<b>Abfrage</b>:<br /><i>$sql</i>";
echo "<h2>Seit mehr als $days Tagen nicht mehr aktive User</h2>\n";
while ($row = mysql_fetch_array($res)) {

	set_time_limit(30);

	echo gmdate("d.m.Y", $row['user_regdate']) . ":" . gmdate("d.m.Y", $row['user_lastvisit']) . $row['username'] . ": " . $row['user_email'] . ": " . $row['user_posts'] . ": ";

	$sql2 = "select count(post_id) as ps from " . $table_prefix . "posts as p where p.poster_id= " . $row['user_id'];
	$res2 = mysql_query($sql2);
	$row2 = mysql_fetch_array($res2);
	$p += $row2['ps'];
	echo $row2['ps'] . ": ";

	$c++;

	$user_id = $row['user_id'];

	$sql = "SELECT g.group_id
		FROM " . USER_GROUP_TABLE . " ug, " . GROUPS_TABLE . " g
		WHERE ug.user_id = $user_id
			AND g.group_id = ug.group_id
			AND g.group_single_user = 1";
	if( !($result = $db->sql_query($sql)) )
	{
		echo 'Could not obtain group information for this user';
	}

	set_time_limit(30);

	$row = $db->sql_fetchrow($result);

	$sql = "UPDATE " . POSTS_TABLE . "
		SET poster_id = " . ANONYMOUS . ", post_username = '$username'
		WHERE poster_id = $user_id";
	if( !$db->sql_query($sql) )
	{
		echo 'Could not update posts for this user';
	}

	set_time_limit(30);

	$sql = "UPDATE " . TOPICS_TABLE . "
		SET topic_poster = " . ANONYMOUS . "
		WHERE topic_poster = $user_id";
	if( !$db->sql_query($sql) )
	{
		echo 'Could not update topics for this user';
	}

	set_time_limit(30);

	$sql = "DELETE FROM " . USERS_TABLE . "
		WHERE user_id = $user_id";
	if( !$db->sql_query($sql) )
	{
		echo 'Could not delete user';
	}

	set_time_limit(30);

	$sql = "DELETE FROM " . USER_GROUP_TABLE . "
		WHERE user_id = $user_id";
	if( !$db->sql_query($sql) )
	{
		echo 'Could not delete user from user_group table';
	}

	set_time_limit(30);

	$sql = "DELETE FROM " . GROUPS_TABLE . "
		WHERE group_id = " . $row['group_id'];
	if( !$db->sql_query($sql) )
	{
		echo 'Could not delete group for this user';
	}

	set_time_limit(30);

	$sql = "DELETE FROM " . AUTH_ACCESS_TABLE . "
		WHERE group_id = " . $row['group_id'];
	if( !$db->sql_query($sql) )
	{
		echo 'Could not delete group for this user';
	}

	set_time_limit(30);

	$sql = "DELETE FROM " . TOPICS_WATCH_TABLE . "
		WHERE user_id = $user_id";
	if ( !$db->sql_query($sql) )
	{
		echo 'Could not delete user from topic watch table';
	}

	echo 'User deleted<br />';

}
echo $c . " " . $p;
?>
Sascha A. Carlin,
phpBB.de Ehrenadministrator
:o
chrisredfield_0

Beitrag von chrisredfield_0 »

danke schonmal für die schnelle Antwort, aber kannst du das noch ein bisschen präzisieren (kenn mich mit PHP wirkl nicht gut aus) wo muss ich das anpassen/einfügen?

thx
Benutzeravatar
itst
Ehrenadmin
Beiträge: 7418
Registriert: 21.08.2001 02:00
Wohnort: Büttelborn bei Darmstadt
Kontaktdaten:

Beitrag von itst »

Nix PHP, SQL. In Zeile 13 steht die Anfrage, die genutzt wird, um die USer auszuwählen, die gelöscht werden.

Für alle 0-Poster müsste sie

Code: Alles auswählen

$sql = "select user_id, username, user_email, user_lastvisit, user_regdate, user_posts from " . $table_prefix . "users where user_id >0 and user_posts=0";
heissen.

HTH, Sascha
Sascha A. Carlin,
phpBB.de Ehrenadministrator
:o
chrisredfield_0

Beitrag von chrisredfield_0 »

thx..
hab jetzt auch ein script gefunden, mit dem man 0-posts leute und inaktive automatisch löschen kann

http://www.phpbbhacks.com/viewhack.php?id=346
Benutzeravatar
Guido
Mitglied
Beiträge: 1307
Registriert: 06.10.2002 09:44
Wohnort: Rheinland
Kontaktdaten:

Beitrag von Guido »

chrisredfield_0 hat geschrieben:thx..
hab jetzt auch ein script gefunden, mit dem man 0-posts leute und inaktive automatisch löschen kann

http://www.phpbbhacks.com/viewhack.php?id=346
Weis einer mit Sicherheit, dass das auch in der 2.01 Vers. läuft ?
Benutzeravatar
Guido
Mitglied
Beiträge: 1307
Registriert: 06.10.2002 09:44
Wohnort: Rheinland
Kontaktdaten:

Beitrag von Guido »

Also ich habs dann einfach mal riskiert und - - - ES KLAPPT ! auch in Version 2.01 (Classic Style). Und das Teil ist echt super praktisch !
Pansn

Beitrag von Pansn »

klappt das auch bei deutscher sprache ? (habe das 2.0.6).
Benutzeravatar
Schumi
Ehemaliges Teammitglied
Beiträge: 4925
Registriert: 07.10.2002 12:37

Beitrag von Schumi »

Ja, funktioniert mit jeder Sprache.
Benutzeravatar
rocomat
Mitglied
Beiträge: 15
Registriert: 23.05.2004 10:30
Wohnort: Schlüchtern

Beitrag von rocomat »

Gibt es da nicht ein mod, bei dem man einen Zeitraum angeben kann, wann ein 0-poster nach x tagen gelöscht wird. Ich dachte soetwas habe ich schon malgesehen. Das wäre auch sinnvoll bei den Russen spammern.

kennt jemand solch einen Mod?
Antworten

Zurück zu „phpBB 2.0: Administration, Benutzung und Betrieb“