Seite 1 von 1

Mitglieder erst nach Aktivierung anzeigen

Verfasst: 27.03.2004 02:38
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.

Verfasst: 02.04.2004 10:42
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";

Verfasst: 11.04.2004 21:59
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.

Verfasst: 27.09.2004 10:48
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.

Verfasst: 18.01.2007 21:54
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']);
}