Seite 1 von 1

Kill-User-Script

Verfasst: 26.10.2003 13:13
von Burkhard
Wir benutzen mit zwei Foren dieselbe Datenbank. Andi (www.rafinfo.de) hat dazu ein ziemlich geniales Script geschrieben, das per Webinterface sowohl nach Nutzernamen als auch Mail-Adressen sucht (um Karteileichen löschen zu können). Da nicht alle Browser bzw. Browser-Konfigurationen im Admin-Modus die Usersuche unterstützen, ist das ganz praktisch. Irgendwo auf dem Server - natürlich passwortgeschützt - ablegen.

Code: Alles auswählen

<?
$config[db_server]    = 'localhost';
$config[db_user]      = 'xxxxxxx';
$config[db_password]  = 'xxxxxxx';
$config[db_database]  = 'xxxxxxx';

?>
<p>
    <form action="phpbbuserdel.php">
    Nach User oder email suchen: <input type="text" name="username">
                 <input type="submit" value="suchen"> (ungefährlich)
    </form>
</p>
<hr>
<?
if(!empty($_REQUEST[username])){
  print '<p>User auswaehlen (ungefährlich):</p>';
  $SELECT = "SELECT username, user_id, user_email
               FROM phpbb_users
              WHERE username RLIKE '".$_REQUEST[username]."'
                 OR user_email RLIKE '".$_REQUEST[username]."'
           ORDER BY username";
  $result = runSQL($SELECT);
  foreach ($result as $row){
    print '<a href="phpbbuserdel.php?id='.$row[user_id].'">'.$row[username].'</a> ('.$row[user_email].')<br>';
  }
}

if(!empty($_REQUEST[id])){
  $SELECT = "SELECT username
               FROM phpbb_users
              WHERE user_id = ".$_REQUEST[id];
  $result = runSQL($SELECT);
  $username = $result[0][username];
  
  $SELECT = "SELECT count(*) as c
               FROM phpbb_posts
              WHERE poster_id = ".$_REQUEST[id];
  $result = runSQL($SELECT);
  $burksposts = $result[0][c];
  
  $SELECT = "SELECT count(*) as c
               FROM rafinfo_posts
              WHERE poster_id = ".$_REQUEST[id];
  $result = runSQL($SELECT);
  $rafposts = $result[0][c];
  
  print "<p><b> ".$username."</b> hat <b>".$burksposts."</b> postings im burks Forum und <b>".$rafposts."</b> postings im rafinfo Forum.</p>";
  
  print '<a href="phpbbuserdel.php?delid='.$_REQUEST[id].'">USER LÖSCHEN</a>';
  print ' (nur klicken wenn der user wirklich gelöscht werden soll)';
}

if(!empty($_REQUEST[delid])){
  $SELECT = "SELECT username
               FROM phpbb_users
              WHERE user_id = ".$_REQUEST[delid];
  $result = runSQL($SELECT);
  $username = $result[0][username];

  if(empty($username)){
    print 'Scheisse da ist was schief gelaufen! Ich habe keinen User zur ID '.$_REQUEST[delid];
    print ' gefunden! Hast du auf reload gedrueckt oder sowas??';
    exit;
  }

  $UPDATE = "UPDATE phpbb_posts
                SET poster_id = -1,
                    post_username = '$username'
              WHERE poster_id = ".$_REQUEST[delid];
  runSQL($UPDATE);
  $UPDATE = "UPDATE rafinfo_posts
                SET poster_id = -1,
                    post_username = '$username'
              WHERE poster_id = ".$_REQUEST[delid];
  runSQL($UPDATE);
  $UPDATE = "UPDATE phpbb_topics
                SET topic_poster = -1
              WHERE topic_poster = ".$_REQUEST[delid];
  runSQL($UPDATE);
  $UPDATE = "UPDATE rafinfo_topics
                SET topic_poster = -1
              WHERE topic_poster = ".$_REQUEST[delid];
  runSQL($UPDATE);
  $DELETE = "DELETE FROM phpbb_topics_watch
              WHERE user_id = ".$_REQUEST[delid];
  runSQL($DELETE);
  $DELETE = "DELETE FROM rafinfo_topics_watch
              WHERE user_id = ".$_REQUEST[delid];
  runSQL($DELETE);
  $DELETE = "DELETE FROM phpbb_users
              WHERE user_id = ".$_REQUEST[delid];
  runSQL($DELETE);
  
  print '<p>Done. Der user ist Geschichte!</p>';
}

function runSQL($sql_string) {
  global $config;
  if($config['debug']){
    echo "\n\n<!-- ".$sql_string."-->\n\n";
  }
  $link = mysql_connect ($config['db_server'], $config['db_user'], $config['db_password']) or 
            die("DB Connection Error <p>Edit the database settings in <code>config.inc.php</code>.</p>" );
  $result = mysql_db_query($config['db_database'],$sql_string,$link) or
            die("Database Problem".mysql_error($link)."\n<br />\n".$sql_string);
  //mysql_db_query returns 1 on a insert statement -> no need to ask for results
  if ($result != 1) {
    for($i=0; $i< mysql_num_rows($result); $i++) {
      $temparray = mysql_fetch_assoc($result);
      $resultarray[]=$temparray;
    }
    mysql_free_result ($result);    
  }
  if (mysql_insert_id($link)) {
    $resultarray = mysql_insert_id($link); #give back ID on insert
  }
  mysql_close ($link);
  return $resultarray;
}
?>
Burks

Verfasst: 27.10.2003 12:07
von D@ve
Über zwei Foren mit einer DB hab ich auch letztlich mal nachgedacht. Wie macht ihr das da mit der Serveradresse? Was habt Ihr da für einen Workaround?

Gruß, Dave

Verfasst: 27.10.2003 12:40
von Burkhard
D@ve hat geschrieben:Über zwei Foren mit einer DB hab ich auch letztlich mal nachgedacht. Wie macht ihr das da mit der Serveradresse? Was habt Ihr da für einen Workaround
Was meinst du mit Workaround? Ich nix Werbesprech verstehen.
Burks

Verfasst: 27.10.2003 17:51
von D@ve
Du musst normalerweise eine Scriptdomain bzw. ein Scriptpfad im ACP eingeben, der in der Datenbank gespeichert wird. Auf diese Domain wird zB. Nach einem Login oder dergleichen umgeleitet. Wie macht ihr das mit zwei Foren und einer Datenbank? Man kann ja keine zwei Domains angeben

Gruß, Dave

Verfasst: 27.10.2003 19:38
von Burkhard
D@ve hat geschrieben:Wie macht ihr das mit zwei Foren und einer Datenbank? Man kann ja keine zwei Domains angeben
Wir nutzen mehrere Tabellen der mySQL-Datenbank gemeinsam. Aber eben nicht alle. Am besten fragst du Andi von rafinfo.de, der hat die Details programmiert. Der antwortet aber in der Regel nicht auf unverschlüsselte E-Mails. :D
Burks