E-mail in banlist nach Self Delete gewünscht, aber 0 Ahnung!

Du suchst einen bestimmten Mod, weißt aber nicht genau wo bzw. ob er überhaupt existiert? Wenn dir dieser Artikel nicht weiterhilft, kannst du hier den von dir gewünschten/gesuchten Mod beschreiben ...
Falls ein Mod-Autor eine der Anfragen hier aufnimmt um einen neuen Mod zu entwicklen, geht's in phpBB 2.0: Mods in Entwicklung weiter.
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
Blex
Mitglied
Beiträge: 29
Registriert: 11.02.2005 00:11
Wohnort: nähe KIEL
Kontaktdaten:

E-mail in banlist nach Self Delete gewünscht, aber 0 Ahnung!

Beitrag von Blex »

Hallo liebe Gemeinde,

habe seit einiger Zeit den Self Delete Mod installiert.

Usern ist es also möglich ihre Accounts mit E-Mail-Aktivierung zu erstellen und auch selbst wieder zu löschen. Der Code mit all den Löschaktionen ist folgender:

Code: Alles auswählen

// Begin Account Self-Delete MOD ** Code from admin/admin_users.php
if( isset($HTTP_POST_VARS['delete_confirm']) )
{  
  $user_id = intval( $HTTP_POST_VARS['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)) )
  {
    message_die(GENERAL_ERROR, 'Could not obtain group information for this user', '', __LINE__, __FILE__, $sql);
  }

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

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

  $sql = "UPDATE " . TOPICS_TABLE . "
    SET topic_poster = " . DELETED . " 
    WHERE topic_poster = $user_id";
  if( !$db->sql_query($sql) )
  {
    message_die(GENERAL_ERROR, 'Could not update topics for this user', '', __LINE__, __FILE__, $sql);
  }
			
  $sql = "UPDATE " . VOTE_USERS_TABLE . "
    SET vote_user_id = " . DELETED . "
    WHERE vote_user_id = $user_id";
  if( !$db->sql_query($sql) )
  {
    message_die(GENERAL_ERROR, 'Could not update votes for this user', '', __LINE__, __FILE__, $sql);
  }
			
  $sql = "SELECT group_id
    FROM " . GROUPS_TABLE . "
    WHERE group_moderator = $user_id";
  if( !($result = $db->sql_query($sql)) )
  {
    message_die(GENERAL_ERROR, 'Could not select groups where user was moderator', '', __LINE__, __FILE__, $sql);
  }
			
  while ( $row_group = $db->sql_fetchrow($result) )
  {
    $group_moderator[] = $row_group['group_id'];
  }
			
  if ( count($group_moderator) )
  {
    $update_moderator_id = implode(', ', $group_moderator);
			
    $sql = "UPDATE " . GROUPS_TABLE . "
      SET group_moderator = " . $userdata['user_id'] . "
      WHERE group_moderator IN ($update_moderator_id)";
    if( !$db->sql_query($sql) )
    {
      message_die(GENERAL_ERROR, 'Could not update group moderators', '', __LINE__, __FILE__, $sql);
    }
  }

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

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

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

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

  $sql = "DELETE FROM " . TOPICS_WATCH_TABLE . "
    WHERE user_id = $user_id";
  if ( !$db->sql_query($sql) )
  {
    message_die(GENERAL_ERROR, 'Could not delete user from topic watch table', '', __LINE__, __FILE__, $sql);
  }
			
  $sql = "DELETE FROM " . BANLIST_TABLE . "
    WHERE ban_userid = $user_id";
  if ( !$db->sql_query($sql) )
  {
    message_die(GENERAL_ERROR, 'Could not delete user from banlist table', '', __LINE__, __FILE__, $sql);
  }

  $sql = "SELECT privmsgs_id
    FROM " . PRIVMSGS_TABLE . "
    WHERE privmsgs_from_userid = $user_id 
    OR privmsgs_to_userid = $user_id";
  if ( !($result = $db->sql_query($sql)) )
  {
    message_die(GENERAL_ERROR, 'Could not select all users private messages', '', __LINE__, __FILE__, $sql);
  }

  // This little bit of code directly from the private messaging section.
  while ( $row_privmsgs = $db->sql_fetchrow($result) )
  {
    $mark_list[] = $row_privmsgs['privmsgs_id'];
  }
			
  if ( count($mark_list) )
  {
    $delete_sql_id = implode(', ', $mark_list);
		
    $delete_text_sql = "DELETE FROM " . PRIVMSGS_TEXT_TABLE . "
      WHERE privmsgs_text_id IN ($delete_sql_id)";
    $delete_sql = "DELETE FROM " . PRIVMSGS_TABLE . "
      WHERE privmsgs_id IN ($delete_sql_id)";
				
    if ( !$db->sql_query($delete_sql) )
    {
      message_die(GENERAL_ERROR, 'Could not delete private message info', '', __LINE__, __FILE__, $delete_sql);
    }
				
    if ( !$db->sql_query($delete_text_sql) )
    {
      message_die(GENERAL_ERROR, 'Could not delete private message text', '', __LINE__, __FILE__, $delete_text_sql);
    }
  }

  $message = $lang['User_deleted'] . '<br /><br />' . sprintf($lang['Click_return_userprofile'], '<a href="' . append_sid("profile.$phpEx?mode=editprofile") . '">', '</a>') . '<br /><br />' . sprintf($lang['Click_return_index'], '<a href="' . append_sid("index.$phpEx") . '">', '</a>');

  message_die(GENERAL_MESSAGE, $message);
}
// End Account Self-Delete MOD
Leider gibts nun ein paar Dödel, die sich schnell anmelden, Unsinn posten und sich dann wieder abmelden. Beim nächsten Mal melden sie sich dann halt wieder an und posten Unsinn und dann melden sie sich wieder ab. :(

Nun hatte ich mir vorgestellt bei der Abmeldroutine die E-mail-Adressse des sich abmeldenden Users automatisch auf die banlist zu schreiben, bekomme das aber gar nicht gebacken, weil ich einfach zu wenig Erfahrung habe, um das sicher umsetzen zu können. :oops:

Kann mir da jemand helfen? :-?
Sollte für einen erfahrenen phpler nen Klacks sein - oder irre ich? :-?

Wäre echt nett! :wink:
Benutzeravatar
Blex
Mitglied
Beiträge: 29
Registriert: 11.02.2005 00:11
Wohnort: nähe KIEL
Kontaktdaten:

Beitrag von Blex »

Habe selber ein bischen gebastelt, bin da aber völlig planlos!
Kann das funktionieren, wenn ich da sowas ausführen lasse oder ist das totaler Murks? :oops:

Code: Alles auswählen

$sql = "SELECT user_email FROM " . USERS_TABLE . " WHERE user_id=$user_id"; 
   if( $result = $db->sql_query($sql) ) 
   { 
      if (!$db->sql_fetchrowset($result)) 
      { 
         // insert the user in the ban list 
         $sql = "INSERT INTO " . BANLIST_TABLE . " (ban_email) VALUES ($user_email)"; 
         if (!$result = $db->sql_query($sql) ) 
            message_die(GENERAL_ERROR, "Couldn't insert ban_email info into database", "", __LINE__, __FILE__, $sql); 
         else $no_error_ban=true; 
      } else $no_error_ban = true; 
   } else message_die(GENERAL_ERROR, "Couldn't obtain banlist information", "", __LINE__, __FILE__, $sql);
Wo sind denn hier die Cracks? 8)
Zuletzt geändert von Blex am 21.03.2006 21:19, insgesamt 1-mal geändert.
Benutzeravatar
Slytherin
Mitglied
Beiträge: 1771
Registriert: 11.03.2005 17:52
Wohnort: Hogwarts
Kontaktdaten:

Beitrag von Slytherin »

Ich würde mich nicht unbedingt als Crack bezeichnen, aber obenstehender Code sieht eigentlich schon gar nicht mal so übel aus.
Versuch doch mal, den einzubauen und erstelle ein Backup der Datei.
Dann sieht man weiter. :wink:

Slytherin
Benutzeravatar
Blex
Mitglied
Beiträge: 29
Registriert: 11.02.2005 00:11
Wohnort: nähe KIEL
Kontaktdaten:

Beitrag von Blex »

Funzt nicht! :cry:

Hat jemand ne Ahnung warum nicht? :-?
Es passiert einfach nichts - nicht mal ne Fehlermeldung! :grin:
Ist ja merkwürdig! :o

Oder muß ich da alle Tabellenfelder angeben?

Hilfe!
Benutzeravatar
Blex
Mitglied
Beiträge: 29
Registriert: 11.02.2005 00:11
Wohnort: nähe KIEL
Kontaktdaten:

Beitrag von Blex »

So liebe Gemeinde,

da die Cacks ja alle Urlaub haben, hab ich mich durch die Dokumentationen diverser Seiten gelesen und dann folgenden Code eingebaut, der sehr fein funzt! Allerdings bleibt da noch eine Frage: Ist das so sauber oder könnten Probs auftreten?

Code: Alles auswählen

//-----
   $sql = "INSERT INTO " . BANLIST_TABLE . " (ban_email) SELECT user_email FROM " . USERS_TABLE . " WHERE user_id = $user_id";
  if( !$db->sql_query($sql) )
  {
    message_die(GENERAL_ERROR, 'Could not do this action for this user', '', __LINE__, __FILE__, $sql);
  }
//------
Dank schon mal im Vorraus!
Antworten

Zurück zu „phpBB 2.0: Mod Suche/Anfragen“