Kill-User-Script

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Benutzeravatar
Burkhard
Mitglied
Beiträge: 222
Registriert: 15.10.2002 17:16
Wohnort: Berlin
Kontaktdaten:

Kill-User-Script

Beitrag 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
http://www.burksblog.de
- Ceterum censeo GnuPG omnibus utendum esse -
Benutzeravatar
D@ve
Ehemaliges Teammitglied
Beiträge: 3842
Registriert: 28.08.2002 19:33
Wohnort: Bretzfeld
Kontaktdaten:

Beitrag 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
There are only 10 types of people in the world: Those who understand binary, and those who don't
Benutzeravatar
Burkhard
Mitglied
Beiträge: 222
Registriert: 15.10.2002 17:16
Wohnort: Berlin
Kontaktdaten:

Beitrag 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
http://www.burksblog.de
- Ceterum censeo GnuPG omnibus utendum esse -
Benutzeravatar
D@ve
Ehemaliges Teammitglied
Beiträge: 3842
Registriert: 28.08.2002 19:33
Wohnort: Bretzfeld
Kontaktdaten:

Beitrag 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
There are only 10 types of people in the world: Those who understand binary, and those who don't
Benutzeravatar
Burkhard
Mitglied
Beiträge: 222
Registriert: 15.10.2002 17:16
Wohnort: Berlin
Kontaktdaten:

Beitrag 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
http://www.burksblog.de
- Ceterum censeo GnuPG omnibus utendum esse -
Antworten

Zurück zu „Coding & Technik“