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.
Benutzeravatar
itst
Ehrenadmin
Beiträge: 7418
Registriert: 21.08.2001 02:00
Wohnort: Büttelborn bei Darmstadt
Kontaktdaten:

Mitglieder erst nach Aktivierung anzeigen

Beitragvon itst » 27.03.2004 02:38

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: 14614
Registriert: 13.08.2002 14:10
Wohnort: Stuttgart
Kontaktdaten:

Beitragvon PhilippK » 02.04.2004 10:42

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:

Beitragvon itst » 11.04.2004 21:59

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
Ehemaliger
Beiträge: 9179
Registriert: 26.05.2003 14:57
Wohnort: Duisburg
Kontaktdaten:

Beitragvon Leuchte » 27.09.2004 10:48

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

Beitragvon Pyramide » 18.01.2007 21:54

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']);
}


Zurück zu „phpBB 2.0: Snippets“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste