Mitglieder erst nach Aktivierung anzeigen

In diesem moderierten Forum werden Code-Schnipsel, die zu klein sind, um richtige Mods zu sein, abgelegt.
Bei Fragen oder Problemen benutze bitte das Forum phpBB 2.0: Mod Support.
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.0, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
Benutzeravatar
itst
Ehrenadmin
Beiträge: 7418
Registriert: 21.08.2001 02:00
Wohnort: Büttelborn bei Darmstadt
Kontaktdaten:

Mitglieder erst nach Aktivierung anzeigen

Beitrag von itst »

Da es immer öfter zu User-Spam bei Foren kommt, hier ein kleiner Trick sowie weitere Überlegungen, wie man dies zwar nicht verhindert, aber den von den Spammern gewünschten Effekt unterbindet (Verlinken des Forums auf eine vom Spammer in seinen Profil eingegebene URL).
  1. Nicht-Anzeigen

    In der includes/functions.php in Zeile 30 und in der memberlist.php in Zeile 147 und Zeile 279 wird jeweils

    Code: Alles auswählen

    AND user_active = 1
    eingefügt.
    • includes/functions.php:

      Code: Alles auswählen

      		case 'newestuser':
      			$sql = "SELECT user_id, username
      				FROM " . USERS_TABLE . "
      				WHERE user_id <> " . ANONYMOUS . " AND user_active = 1
      				ORDER BY user_id DESC
      				LIMIT 1";
    • memberlist.php:

      Code: Alles auswählen

      $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 . " AND user_active = 1
      	ORDER BY $order_by";

      Code: Alles auswählen

      $sql = "SELECT count(*) AS total 
      FROM " . USERS_TABLE . " 
      WHERE user_id <> " . ANONYMOUS ."
      AND user_active = 1";
    Damit werden auf dem Index sowie in der Mitgliederliste nur Mitglieder angezeigt, die aktivert sind (entweder durch den Admin aktiviert oder per Link aus der Registrierungsmail).
  2. Keine URL bei Null-Poster anzeigen
    Will man keine Benutzeraktivierung nutzen, kann man sich dennoch schützen: man zeigt für Null-Poster (Mitglieder, die nie gepostet haben) einfach keine URL an.
    Dazu sind Änderungen an der includes/user_viewprofile.php Zeile 136f., der memberlist.php Zeile 204f. und der viewtopic.php Zeile 934f. nötig.
    • includes/usercp_viewprofile.php:

      Code: Alles auswählen

      $www_img = ( ($profiledata['user_website'])  && ($profiledata['user_posts'] > 0) ) ? '<a href="' . $profiledata['user_website'] . '" target="_userwww"><img src="' . $images['icon_www'] . '" alt="' . $lang['Visit_website'] . '" title="' . $lang['Visit_website'] . '" border="0" /></a>' : '&nbsp;';
      $www = ( ($profiledata['user_website'])  && ($profiledata['user_posts'] > 0) ) ? '<a href="' . $profiledata['user_website'] . '" target="_userwww">' . $profiledata['user_website'] . '</a>' : '&nbsp;';
    • memberlist.php:

      Code: Alles auswählen

      		$www_img = ( ($row['user_website']) && ($posts > 0) ) ? '<a href="' . $row['user_website'] . '" target="_userwww"><img src="' . $images['icon_www'] . '" alt="' . $lang['Visit_website'] . '" title="' . $lang['Visit_website'] . '" border="0" /></a>' : '';
      		$www = ( ( $row['user_website']) && ($posts > 0) ) ? '<a href="' . $row['user_website'] . '" target="_userwww">' . $lang['Visit_website'] . '</a>' : '';
    • viewtopic.php:

      Code: Alles auswählen

      		$www_img = ( ($postrow[$i]['user_website']) && ($postrow[$i]['user_posts'] > 0) ) ? '<a href="' . $postrow[$i]['user_website'] . '" target="_userwww"><img src="' . $images['icon_www'] . '" alt="' . $lang['Visit_website'] . '" title="' . $lang['Visit_website'] . '" border="0" /></a>' : '';
      		$www = ( ($postrow[$i]['user_website']) && ($postrow[$i]['user_posts'] > 0) ) ? '<a href="' . $postrow[$i]['user_website'] . '" target="_userwww">' . $lang['Visit_website'] . '</a>' : '';
  3. Änderung des Registrierungsformulars

    Dabei geht es darum, bei der Anmeldung nur noch die benötigten Felder -Benutzername, Passwort und E-Mail-Adresse - anzuzeigen und zu verarbeiten. Änderungen am Profil - zum Beispiel Eingabe einer Homepage - kann ein Benutzer erst nach der Aktivierung, soweit eingeschaltet, und erfolgreichem Login vornehmen. Das sollte für die meisten Robots etwas zu viel des Guten sein.
    Dazu benutzen könnte man den Custom Registration MOD.
Nebenbei: auf phpBB.de läuft Variante #1.
Zuletzt geändert von itst am 26.08.2004 13:52, insgesamt 4-mal geändert.
Sascha A. Carlin,
phpBB.de Ehrenadministrator
:o

PhilippK
Vorstand
Vorstand
Beiträge: 14662
Registriert: 13.08.2002 14:10
Wohnort: Stuttgart
Kontaktdaten:

Beitrag von PhilippK »

Um die inaktiven User auch auf der Startseite bei der Zahl der registrierten User nicht zu berücksichtigen, folgende Änderung durchführen:
In der ./includes/functions.php suchen

Code: Alles auswählen

			$sql = "SELECT COUNT(user_id) AS total
				FROM " . USERS_TABLE . "
				WHERE user_id <> " . ANONYMOUS;
und ersetzen durch

Code: Alles auswählen

			$sql = "SELECT COUNT(user_id) AS total
				FROM " . USERS_TABLE . "
				WHERE user_id <> " . ANONYMOUS . "
					AND user_active = 1";
Kein Support per PN!
Der Sozialstaat ist [...] eine zivilisatorische Errungenschaft, auf die wir stolz sein können. Aber der Sozialstaat heutiger Prägung hat sich übernommen. Das ist bitter, aber wahr. (Horst Köhler)
Meine Mods

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

Beitrag von itst »

Danke an webtrends für diesen Hinweis:

Bei 2. memberlist.php muss es statt

Code: Alles auswählen

$www = ( $row['user_website']) && ($posts > 0) ) ? '<a href="' . $row['user_website'] . '" target="_userwww">' . $lang['Visit_website'] . '</a>' : '';

Code: Alles auswählen

$www = ( ($row['user_website']) && ($posts > 0) ) ? '<a href="' . $row['user_website'] . '" target="_userwww">' . $lang['Visit_website'] . '</a>' : '';
heissen.
Sascha A. Carlin,
phpBB.de Ehrenadministrator
:o

Benutzeravatar
Leuchte
Ehemaliges Teammitglied
Beiträge: 9179
Registriert: 26.05.2003 14:57
Wohnort: Duisburg
Kontaktdaten:

Beitrag von Leuchte »

Um nur Mitglieder mit einer bestimmten Anzahl von Beiträgen anzuzeigen muss folgende Änderung in der memberlist.php durchgeführt werden:

Code: Alles auswählen

$sql = "SELECT username, user_id, user_viewemail, user_posts, user_regdate, user_lastlogon, user_allow_viewonline, 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 . "
Danach einfügen:

Code: Alles auswählen

AND user_posts >= 20
In Zeile 277 finden:

Code: Alles auswählen

$sql = "SELECT count(*) AS total
FROM " . USERS_TABLE . "
WHERE user_id <> " . ANONYMOUS;
Darin finden

Code: Alles auswählen

WHERE user_id <> " . ANONYMOUS;
Ersetzen mit

Code: Alles auswählen

WHERE user_id <> " . ANONYMOUS . "
AND user_posts >= 20
Die 20 ist jeweils die Beitragszahl.

Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12735
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

Folgende Änderung von Stefane sorgt dafür, daß man das Profil gebannter Benutzer nicht aufrufen kann (greift allerdings nur in profile.php):

öffne:

Code: Alles auswählen

language/lang_german/lang_main.php
finde: füge davor ein:

Code: Alles auswählen

$lang['cantreadbannedprofile'] = 'Das Profil gebannter User kann nicht eingesehen werden.';
öffne:

Code: Alles auswählen

includes/usercp_viewprofile.php
suche:

Code: Alles auswählen

if (!$profiledata)
{
	message_die(GENERAL_MESSAGE, $lang['No_user_id_specified']);
}
danach einfügen:

Code: Alles auswählen

$sql = "SELECT * FROM " . BANLIST_TABLE . " WHERE ban_userid = ". $profiledata['user_id'];
if ( !($result = $db->sql_query($sql)) )
{
	message_die(GENERAL_ERROR, 'Could not obtain ban information', '', __LINE__, __FILE__, $sql);
}
$row = $db->sql_fetchrow($result);
if (($row['ban_id']<>"") AND ($userdata['user_level']<>"1"))
{
	message_die(GENERAL_ERROR, $lang['cantreadbannedprofile']);
}
KB:knigge

Antworten

Zurück zu „phpBB 2.0: Snippets“