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.

Mitglieder erst nach Aktivierung anzeigen

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

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
PhilippK
Vorstand
Vorstand
 
Beiträge: 14535
Registriert: 13.08.2002 14:10
Wohnort: Stuttgart

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

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

Beitragvon Pyramide » 18.01.2007 22: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:
Code: Alles auswählen
?>

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']);
}
Benutzeravatar
Pyramide
Ehrenadmin
 
Beiträge: 12735
Registriert: 19.04.2001 02:00
Wohnort: Meschede


Zurück zu phpBB 2.0: Snippets

Wer ist online?

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


cron