LoGD Standardrelease steht hier zum Download zur Verfügung!

Zeige Source: /logd/user.php

Hier klicken für den Source, ODER
Weitere Dateien, von denen du den Quelltext sehen kannst:
(Das Lesen des Source, um sich spielerische Vorteile zu verschaffen, ist nicht erlaubt. Solltest du Schwachstellen oder Fehler entdecken, bist du als Spieler verpflichtet, diese zu melden.)

Source von: /logd/user.php

<?php

// 15082004

require_once "common.php";
require_once 
"func/showform.php";
require_once 
"func/isnewday.php";
isnewday(2);

if (
$_GET[op]=="search"){
    
$sql "SELECT acctid FROM accounts WHERE ";
    
$where="
    login LIKE '%
{$_POST['q']}%' OR
    acctid LIKE '%
{$_POST['q']}%' OR
    name LIKE '%
{$_POST['q']}%' OR
    emailaddress LIKE '%
{$_POST['q']}%' OR
    lastip LIKE '%
{$_POST['q']}%' OR
    uniqueid LIKE '%
{$_POST['q']}%' OR
    gentimecount LIKE '%
{$_POST['q']}%' OR
    level LIKE '%
{$_POST['q']}%'";
    
$result db_query($sql.$where);
    if (
db_num_rows($result)<=0){
        
output("`\$Keine Ergebnisse gefunden`0");
        
$_GET[op]="";
        
$where="";
    }elseif (
db_num_rows($result)>100){
        
output("`\$Zu viele Ergebnisse gefunden. Bitte Suche einengen.`0");
        
$_GET[op]="";
        
$where="";
    }elseif (
db_num_rows($result)==1){
        
//$row = db_fetch_assoc($result);
        //redirect("user.php?op=edit&userid=$row[acctid]");
        
$_GET[op]="";
        
$_GET['page']=0;
    }else{
        
$_GET[op]="";
        
$_GET['page']=0;
    }
}

page_header("User Editor");
output("<form action='user.php?op=search' method='POST'>Suche in allen Feldern: <input name='q' id='q'><input type='submit' class='button'></form>",true);
output("<script language='JavaScript'>document.getElementById('q').focus();</script>",true);
addnav("","user.php?op=search");
addnav("G?Zurück zur Grotte","superuser.php");
addnav("W?Zurück zum Weltlichen","village.php");
addnav("Verbannung","user.php?op=setupban");
addnav("Verbannungen anzeigen/entfernen","user.php?op=removeban");
addnav("Prangern","admin_jail.php");

$sql "SELECT count(acctid) AS count FROM accounts";
$result db_query($sql);
$row db_fetch_assoc($result);
$page=0;
while (
$row[count]>0){
    
$page++;
    
addnav("$page Seite $page","user.php?page=".($page-1)."&sort=$_GET[sort]");
    
$row[count]-=100;
}

$mounts=",0,Keins";
$sql "SELECT mountid,mountname,mountcategory FROM mounts ORDER BY mountcategory";
$result db_query($sql);
while (
$row db_fetch_assoc($result)){
    
$mounts.=",{$row['mountid']},{$row['mountcategory']}{$row['mountname']}";
}

$userinfo = array(
    
"Account Info,title",
    
"acctid"=>"User ID,viewonly",
    
"login"=>"Login",
    
"newpassword"=>"Neues Passwort",
    
"emailaddress"=>"Email Adresse",
    
"locked"=>"Account gesperrt,bool",
    
"multi_allowed"=>"Genehmigter Multi,bool",
    
"ot_denied"=>"Off-Topic verboten,bool",
    
"banoverride"=>"Verbannungen übergehen,bool",
    
"superuser"=>"Superuser,enum,0,Standard Spieltage pro Kalendertag,1,Priester,2,nicht belegt,3,Helfer,4,Admin,5,Admin,6,unsichtbar",

    
"User Infos,title",
    
"name"=>"Display Name",
    
"title"=>"Titel (muss auch in Display Name)",
    
"ctitle"=>"Eigener Titel (muss auch in Display Name)",
    
"sex"=>"Geschlecht,enum,0,Männlich,1,Weiblich",
    
"rp_only"=>"RP-Char?,enum,0,Kämpfer-Char,1,RP-Char,2,NPC",
    
"pvpflag"=>"PvP-Schutz?,enum,0000-00-00 00:00:00,kein Schutz,5013-10-06 00:42:00,PvP-Schutz ein,1986-10-06 00:42:00,Schutz verloren",
// we can't change this this way or their stats will be wrong.
    
"race"=>"Rasse",
    
"age"=>"Tage seit Level 1,int",
    
"dragonkills"=>"Drachenkills,int",
    
"dragonage"=>"Alter beim letzten Drachenkill,int",
    
"bestdragonage"=>"Jüngstes Alter bei einem Drachenkill,int",
    
"jailtime"=>"Sitzt noch Tage am Pranger `4(max. 255)`0,int",
    
"prison"=>"Sitzt sie/er im Gefängniss?,enum,0,Nein,1,Ja",
    
"prisondays"=>"Tage im Kerker `4(max. 255)`0,int",
    
"einzelhaft"=>"Sitzt sie/er in einzelhaft?,enum,0,Nein,1,Ja",
    
"einzeldays"=>"Tage Einzelhaft `4(max. 255)`0,int",
    
"gesinnung"=>"Gesinnung,enum,0,Unbekannt,1,Chaotisch Gut,2,Rechtschaffen Gut,3,Neutral,4,Rechtschaffen Böse,5,Chaotisch Böse,6,Chaotisch Neutral",
    
"kunst"=>"Kampfart `4(zum Ändern 0 eintragen!)`0,int",

    
"Kindersystem,title",
        
"ssstatus"=>"Schwanger?,enum,0,Nein,1,Ja",
    
"ssmonat"=>"Schwangerschafts Monat (22 Std),int",
    
"sserzeug"=>"ID des Vaters,int",

    
"Werte,title",
    
"level"=>"Level,int",
    
"experience"=>"Erfahrung,int",
    
"hitpoints"=>"Lebenspunkte (aktuell),int",
    
"maxhitpoints"=>"Maximale Lebenspunkte,int",
    
"turns"=>"Runden übrig,int",
    
"playerfights"=>"Spielerkämpfe übrig,int",
    
"attack"=>"Angriffswert (inkl. Waffenschaden),int",
    
"defence"=>"Verteidigung (inkl. Rüstung),int",
    
"spirits"=>"Stimmung (nur Anzeige),enum,-2,Sehr schlecht,-1,Schlecht,0,Normal,1,Gut,2,Sehr gut",
    
"resurrections"=>"Auferstehungen,int",
    
"alive"=>"Lebendig,int",
    
"reputation"=>"Ansehen (-50 - +50),int",
    
"punch"=>"Bester Schlag,int",

    
"Spezialitäten,title",
    
"specialty"=>"Spezialität,enum,0,Unspezifiziert,1,Dunkle Künste,2,Mystische Kräfte,3,Diebeskunst,4,Feuer Künste,5,Weiße Magie",
    
"darkarts"=>"`4Stufe  in Dunklen Künsten`0,int",
    
"darkartuses"=>"`4^--heute übrig`0,int",
    
"magic"=>"`%Stufe in Mystischen Kräften`0,int",
    
"magicuses"=>"`%^--heute übrig`0,int",
    
"thievery"=>"`^Stufe in Diebeskunst`0,int",
    
"thieveryuses"=>"`^^--heute übrig`0,int",
    
"fire"=>"`qStufe in Feuer Künsten`0,int",
    
"fireuses"=>"`q^--heute übrig`0,int",
    
"wmagie"=>"`qStufe in Weißer Magie`0,int",
    
"wmagieuses"=>"`q^--heute übrig`0,int",

    
"Grabkämpfe,title",
    
"deathpower"=>"Gefallen bei Ramius,int",
    
"gravefights"=>"Grabkämpfe übrig,int",
    
"soulpoints"=>"Seelenpunkte (HP im Tod),int",


    
"Ausstattung,title",
    
"gems"=>"Edelsteine,int",
    
"gemsinbank"=>"Edelsteine auf der Bank,int",
    
"gold"=>"Bargold,int",
    
"goldinbank"=>"Gold auf der Bank,int",
    
"transferredtoday"=>"Anzahl Transfers heute,int",
    
"amountouttoday"=>"Heute ausgegengener Wert der Überweisungen,int",
    
"weapon"=>"Name der Waffe",
    
"weapondmg"=>"Waffenschaden,int",
    
"weaponvalue"=>"Kaufwert der Waffe,int",
    
"armor"=>"Name der Rüstung",
    
"armordef"=>"Verteidigungswert,int",
    
"armorvalue"=>"Kaufwert der Rüstung,int",

    
"Sonderinfos,title",
    
"house"=>"Haus-ID,int",
    
"housekey"=>"Hausschlüssel?,int",
    
"marriedto"=>"Partner-ID (4294967295 = Violet/Seth),int",
    
"charisma"=>"Flirts (4294967295 = verheiratet mit Partner),int",
    
"fragen"=>"Hochzeitfr. (1=gefragt/2=befragt/5=Verlobt/10=Verheiratet),int",
    
"seenlover"=>"Geflirtet,bool",
    
"seenbard"=>"Barden gehört,bool",
    
"charm"=>"Charme,int",
    
"seendragon"=>"Drachen heute gesucht,bool",
    
"seenmaster"=>"Meister befragt,bool",
    
"usedouthouse"=>"Plumpsklo besucht,bool",
    
"fedmount"=>"Tier gefüttert,bool",
    
"gotfreeale"=>"Frei-Ale (MSB: getrunken - LSB: spendiert),int",
    
"hashorse"=>"Tier,enum$mounts",
    
"boughtroomtoday"=>"Zimmer für heute bezahlt,bool",
    
"drunkenness"=>"Betrunken (0-100),int",
    
"herotattoo"=>"Tattoos,int",
    
"orden"=>"Orden,int",
    
"battlepoints"=>"Arenapunkte,int",
    
"rp_points"=>"RPG-Punkte,int",

    
"Weitere Infos,title",
    
"beta"=>"Nimmt am Betatest teil,viewonly",
    
"slainby"=>"Gekillt von Spieler,viewonly",
    
"laston"=>"Zuletzt Online,viewonly",
    
"lasthit"=>"Letzter neuer Tag,viewonly",
    
"lastmotd"=>"Datum der letzten MOTD,viewonly",
    
"lastip"=>"Letzte IP,viewonly",
    
"uniqueid"=>"Unique ID,viewonly",
    
"gentime"=>"Summe der Seitenerzeugungszeiten,viewonly",
    
"gentimecount"=>"Seitentreffer,viewonly",
    
"allowednavs"=>"Zulässige Navigation,viewonly",
    
"dragonpoints"=>"Eingesetzte Drachenpunkte,viewonly",
    
"bufflist"=>"Spruchliste,viewonly",
    
"prefs"=>"Einstellungen,viewonly",
    
"lastwebvote"=>"Zuletzt bei Top Wep Games gewählt,viewonly",
    
"donationconfig"=>"Spendenkäufe,viewonly"
    
);

    
$form=array(
        
"bio"=>"Kurzbeschreibung des Charakters,textarea,60,20",
        
"avatar"=>"Link auf einen Avatar (Bilddatei - maximal 400x400 Pixel)",
        
"mountbio"=>"Kurzbeschreibung des Tieres,textarea,60,20",
        
"mountavatar"=>"Link auf einen Tier-Avatar (Bilddatei - maximal 400x400 Pixel)",
        
"gottname"=>"Eigener Gott"
    
);

//changes by Eliwood for www.silienta-logd.de  geändert für das txtfilesystem
if ($_GET[op]=="lasthit"){
    
$output file_get_contents('./cache/c'.$_GET['userid'].'.txt');
    echo 
str_replace("<iframe src=","<iframe X=",$output);
    exit();
}elseif (
$_GET[op]=="edit"){
    
$result db_query("SELECT * FROM accounts WHERE acctid='$_GET[userid]'") or die(db_error(LINK));
    
$row db_fetch_assoc($result) or die(db_error(LINK));
    
$result1 db_query("SELECT * FROM bio WHERE acctid='$_GET[userid]'") or die(db_error(LINK));
    if (
db_num_rows($result1)>0) {
        
$row1 db_fetch_assoc($result1) or die(db_error(LINK));
        
$mbio=true;
    }
    
output("<table><tr><form action='user.php?op=special&userid=$_GET[userid]".($_GET['returnpetition']!=""?"&returnpetition={$_GET['returnpetition']}":"")."' method='POST'>",true);
    
addnav("","user.php?op=special&userid=$_GET[userid]".($_GET['returnpetition']!=""?"&returnpetition={$_GET['returnpetition']}":"")."");
    
output("<td><input type='submit' class='button' name='newday' value='Neuer Tag'></td>",true);
    
output("<td><input type='submit' class='button' name='fixnavs' value='Navs reparieren'></td>",true);
    
output("<td><input type='submit' class='button' name='clearvalidation' value='E-Mail gültig'></td>",true);
    
output("<td><input type='submit' class='button' name='logout' value='Spieler ausloggen' onClick='return confirm(\"{$row['login']} wirklich ausloggen?\");'></td>",true);
    
output("</form><form action='user.php?op=del&userid=$_GET[userid]'  method='POST'>",true);
    
output("<td><input type='submit' class='button' name='delete' value='Spieler löschen' onClick='return confirm(\"{$row['login']} wirklich löschen? Dann isse(r) wech, und kommt auch bestimmt nicht wieder! Denk daran, gehe noch einmal in dich, und werde dir über deine Gefühle klar! ;)\");'></td></form></tr></table>",true);
    
allownav("user.php?op=del&userid=".$_GET['userid']);
    if (
$_GET['returnpetition']!=""){
        
addnav("Zurück zur Anfrage","viewpetition.php?op=view&id={$_GET['returnpetition']}");
    }

    
addnav("Letzten Treffer anzeigen","user.php?op=lasthit&userid={$_GET['userid']}",false,true);
    
output("<form action='user.php?op=save&userid=$_GET[userid]".($_GET['returnpetition']!=""?"&returnpetition={$_GET['returnpetition']}":"")."' method='POST'>",true);
    
addnav("","user.php?op=save&userid=$_GET[userid]".($_GET['returnpetition']!=""?"&returnpetition={$_GET['returnpetition']}":"")."");
    
addnav("","user.php?op=edit&userid=$_GET[userid]".($_GET['returnpetition']!=""?"&returnpetition={$_GET['returnpetition']}":"")."");
    
addnav("Verbannen","user.php?op=setupban&userid=$row[acctid]");
    
addnav("Debug-Log anzeigen","user.php?op=debuglog&userid={$_GET['userid']}");
    if(
$_GET['ret']=='kl'addnav("Zurück zur Kämpferliste","list.php");
    if(
$_GET['ret']=='mailed2'addnav("Zurück zum Anschreibdings","mailed2.php");
    if(
$_GET['ret']=='multi'addnav("Zurück zu Faillog&Multis","logs.php?op=multi");
    
output("<input type='submit' class='button' value='Speichern'>",true);
    
showform($userinfo,$row);

    if(
$mbio) {
        
$prefs['bio'] = $row1['bio'];
        
$prefs['avatar'] = $row1['avatar'];
        
$prefs['mountbio'] = $row1['mountbio'];
        
$prefs['mountavatar'] = $row1['mountavatar'];
        
$prefs['gottname'] = $row1['gottname'];
        
showform($form,$prefs);
    }

    
output("</form>",true);
    
output("<iframe src='user.php?op=lasthit&userid={$_GET['userid']}' width='100%' height='400'>Dein Browser muss iframes unterstützen, um die letzte Seite des Users anzeigen zu können. Benutze den Link im Menü stattdessen.</iframe>",true);
    
addnav("","user.php?op=lasthit&userid={$_GET['userid']}");
}elseif (
$_GET[op]=="special"){
    if (
$_POST[newday]!=""){
        
$sql "UPDATE accounts SET lasthit='".date("Y-m-d H:i:s",strtotime(date("c")."-".(86500/getsetting("daysperday",4))." seconds"))."' WHERE acctid='$_GET[userid]'";
    
//changes by Eliwood for  www.silienta-logd.de  geändert für das txtfilesystem
    
}elseif($_POST[fixnavs]!=""){
        
$sql "UPDATE accounts SET allowednavs='' WHERE acctid='$_GET[userid]'";
        
$file fopen('./cache/c'.$_GET['userid'].'.txt','wb');
        
fwrite($file,'');
        
fclose($file);
    }elseif(
$_POST[clearvalidation]!=""){
        
$sql "UPDATE accounts SET emailvalidation='' WHERE acctid='$_GET[userid]'";
    }elseif(
$_POST[logout]!=""){
        
$sql "UPDATE accounts SET loggedin=0, location=0 WHERE acctid='$_GET[userid]'";
        
output("User-ID `^{$_GET[userid]}`0 wurde ausgelogd!`n`n");
    }
    
db_query($sql);
    if (
$_GET['returnpetition']==""){
        
// redirect("user.php?".db_affected_rows());
        
redirect("user.php");
    }else{
        
redirect("viewpetition.php?op=view&id={$_GET['returnpetition']}");
    }
}elseif (
$_GET[op]=="save"){
    
$bio mysqli_real_escape_string($mysqlistripslashes($_POST['bio']));
    
$avatar mysqli_real_escape_string($mysqlistripslashes($_POST['avatar']));
    
$mountbio mysqli_real_escape_string($mysqlistripslashes($_POST['mountbio']));
    
$mountavatar mysqli_real_escape_string($mysqlistripslashes($_POST['mountavatar']));
    
$gottname mysqli_real_escape_string($mysqlistripslashes($_POST['gottname']));
    
db_query("UPDATE bio SET avatar='$avatar', bio='$bio', mountavatar='$mountavatar', mountbio='$mountbio', gottname='$gottname' WHERE acctid='".$_GET['userid']."'");

    
$sql "UPDATE accounts SET ";
    
// Ein paar Sicherheiten für Änderungen
    // Gesamtname geändert
    
if ($_POST['oldname']!=$_POST['name']) {
        
$clearedname preg_replace('/`./','',$_POST['name']);
        
// Login bleibt gleich
        
if (substr_count($clearedname,$_POST['login'])) {
            
// Titel rausfinden
            
$replace '(`.)*';
            for (
$i=0;$i<strlen($_POST['login']);$i++) {
                
$replace .= $_POST['login']{$i}.'(`.)*';
            }
            
$_POST['ctitle'] = rtrim(preg_replace('/'.$replace.'/','',$_POST['name']));
            if (
$_POST['ctitle']==''$_POST['title'] = '';
            elseif (
$_POST['ctitle']==$_POST['title']) $_POST['ctitle'] = '';
        }
        
// Neuer Login
        
else {
            
// Leerzeichen vorhanden
            
if ($login strrchr($_POST['name'],' ')) {
                
$_POST['login'] = trim(strrchr($clearedname,' '));
                
$_POST['ctitle'] = str_replace($login,'',$_POST['name']);
                if (
$_POST['ctitle']==$_POST['title']) $_POST['ctitle'] = '';
            }
            
// Kein Leerzeichen vorhanden
            
else {
                
$_POST['login'] = $clearedname;
                
$_POST['title'] = $_POST['ctitle'] = '';
            }
        }
    }
    
// Login geändert
    
elseif ($_POST['oldlogin']!=$_POST['login']) {
        if (
$_POST['ctitle']!=''$_POST['name'] = $_POST['ctitle'].' '.$_POST['login'];
        else 
$_POST['name'] = $_POST['title'].' '.$_POST['login'];
    }
    
// Titel geändert
    
elseif ($_POST['oldtitle']!=$_POST['title'] && $_POST['ctitle']=='') {
        if (
$_POST['oldctitle']!=''$colname str_replace($_POST['oldctitle'],'',$_POST['name']);
        else 
$colname str_replace($_POST['oldtitle'],'',$_POST['name']);
        
$_POST['name'] = $_POST['title'].$colname;
    }
    
// Usertitel geändert
    
elseif ($_POST['oldctitle']!=$_POST['ctitle']) {
        if (
$_POST['oldctitle']!=''$colname str_replace($_POST['oldctitle'],'',$_POST['name']);
        else 
$colname str_replace($_POST['oldtitle'],'',$_POST['name']);
        if (
$_POST['ctitle']==''$_POST['name'] = $_POST['title'].$colname;
        else 
$_POST['name'] = $_POST['ctitle'].$colname;
    }

    
reset($_POST);
    while (list(
$key,$val)=each($_POST)){
        if (isset(
$userinfo[$key])){
            if (
$key=="newpassword" ){
                if (
$val>""$sql.="password = MD5(\"$val\"),";
            }else{
                
$sql.="$key = \"$val\",";
            }
        }
    }
    
$sql=substr($sql,0,strlen($sql)-1);
    
$sql.=" WHERE acctid=\"$_GET[userid]\"";
    
//output("<pre>$sql</pre>");
    //echo "<pre>$sql</pre>";
    //redirect("user.php");
    //output( db_affected_rows()." rows affected");

    //we must manually redirect so that our changes go in to effect *after* our user save.
    
addnav("","viewpetition.php?op=view&id={$_GET['returnpetition']}");
    
addnav("","user.php");
    
saveuser();
    
db_query($sql) or die(db_error(LINK));
    
$bio_sql="UPDATE `bio` SET login='".$_POST['login']."' where acctid='".$_GET['userid']."'";
    
db_query($bio_sql);
    if (
$_GET['returnpetition']!=""){
        
header("Location: viewpetition.php?op=view&id={$_GET['returnpetition']}");
    }else{
        
header("Location: user.php");
    }

    exit();
}elseif (
$_GET[op]=="del"){
    
$sql "SELECT acctid, name, login, marriedto from accounts WHERE acctid='$_GET[userid]'";
    
$res db_query($sql);
    
// inventar und haus löschen und partner und ei freigeben
    //    $sql = "UPDATE accounts SET charisma=0,marriedto=0,fragen=0 WHERE marriedto=$_GET[userid]";
    //    db_query($sql);

    
$sql "DELETE FROM bio WHERE acctid='$_GET[userid]'";
    
db_query($sql);
    
$sql "DELETE FROM pilze WHERE acctid='$_GET[userid]'";
    
db_query($sql);
    if (
$_GET[userid]==getsetting("hasegg",0)) savesetting("hasegg",stripslashes(0));
    if (
$_GET[userid]==getsetting("hasring",0)) savesetting("hasring",stripslashes(0));
    
$sql "UPDATE items SET owner=0 WHERE owner=$_GET[userid] AND class='Schlüssel'";
    
db_query($sql);
    
$sql "DELETE FROM items WHERE owner=$_GET[userid] AND owner!=0";
    
db_query($sql);    
    
$sql "UPDATE houses SET owner=0,status=3 WHERE owner=$_GET[userid] AND status=1";
    
db_query($sql);
    
$sql "UPDATE houses SET owner=0,status=4 WHERE owner=$_GET[userid] AND status=0";
    
db_query($sql);
    
$sql "DELETE FROM accounts_update WHERE acctid='$_GET[userid]'";
    
db_query($sql);
    
$sql "DELETE FROM pvp WHERE acctid2=$_GET[userid] OR acctid1=$_GET[userid]";
    
db_query($sql);
    
$sql "DELETE FROM accounts WHERE acctid='$_GET[userid]'";
    
db_query($sql);
    
outputdb_affected_rows()." Benutzer gelöscht.");
    if (
file_exists('./cache/c'.$_GET[userid].'.txt')) {
        
$file = ('./cache/c'.$_GET[userid].'.txt');
        
unlink($file);
    }
    while (
$row db_fetch_assoc($res)) {
        
// partner frei geben
        // if($row['marriedto']>0) updateuser($row['marriedto'], array('marriedto'=>"=0", 'fragen'=>"=0" ,'charisma'=>"=0"));
        
if($row['marriedto']>0){
            
$sql2 "SELECT acctid, marriedto FROM accounts WHERE acctid=$row[marriedto]";
            
$result2=db_query($sql2);
            
$row2=db_fetch_assoc($result2);
            
db_free_result($result2);
            if(
$row2['marriedto']==$row['acctid']) {
                
$sql "UPDATE accounts SET charisma=0,marriedto=0, fragen=0 WHERE acctid=$row[marriedto]";
                
db_query($sql);
                
// Transferbugfix
                
updateuser($row['marriedto'], array('marriedto'=>"=0"'fragen'=>"=0" ,'charisma'=>"=0"));                
           }
        }
        
addnews("`#{$row['name']} wurde von den Göttern aufgelöst.");
        
debuglog("{$row['login']} wurde von den Göttern aufgelöst.");
    }

}elseif(
$_GET[op]=="setupban"){
    
$sql "SELECT name,lastip,uniqueid FROM accounts WHERE acctid=\"$_GET[userid]\"";
    
$result db_query($sql) or die(db_error(LINK));
    
$row db_fetch_assoc($result);
    if (
$row[name]!=""output("Setting up ban information based on `\$$row[name]`0");
    
output("<form action='user.php?op=saveban' method='POST'>",true);
    
output("Verbannung über IP oder ID (IP bevorzugt. Bei Usern hinter NAT kannst du eine Verbannung über ID versuchen, die aber leicht ungangen werden kann)`n");
    
output("<input type='radio' value='ip' name='type' checked> IP: <input name='ip' value=\"".HTMLEntities($row[lastip])."\">`n",true);
    
output("<input type='radio' value='id' name='type'> ID: <input name='id' value=\"".HTMLEntities($row[uniqueid])."\">`n",true);
    
output("Dauer: <input name='duration' id='duration' size='3' value='14'> days (0 for permanent)`n",true);
    
output("Grund für die Verbannung: <input name='reason' value=\"Ärger mich nicht.\">`n",true);
    
output("<input type='submit' class='button' value='Post Ban' onClick='if (document.getElementById(\"duration\").value==0) {return confirm(\"Willst du wirklich eine permanente Verbannung aussprechen?\");} else {return true;}'></form>",true);
    
output("Bei einem IP-Bann gib entweder eine komplette IP ein, oder gebe nur den Anfang der IP ein, wenn du einen IP-Bereich sperren willst.");
    
addnav("","user.php?op=saveban");
}elseif(
$_GET[op]=="saveban"){
    
$sql "INSERT INTO bans (";
    if (
$_POST[type]=="ip"){
        
$sql.="ipfilter";
    }else{
        
$sql.="uniqueid";
    }
    
$sql.=",banexpire,banreason) VALUES (";
    if (
$_POST[type]=="ip"){
        
$sql.="\"$_POST[ip]\"";
    }else{
        
$sql.="\"$_POST[id]\"";
    }
    
$sql.=",\"".((int)$_POST[duration]==0?"0000-00-00":date("Y-m-d",strtotime(date("c")."+$_POST[duration] days")))."\",";
    
$sql.="\"$_POST[reason]\")";
    if (
$_POST[type]=="ip"){
        if (
substr($_SERVER['REMOTE_ADDR'],0,strlen($_POST[ip])) == $_POST[ip]){
            
$sql "";
            
output("Du willst dich doch nicht wirklich selbst verbannen, oder?? Das ist deine eigene IP-Adresse!");
        }
    }else{
        if (
$_COOKIE[lgi]==$_POST[id]){
            
$sql "";
            
output("Du willst dich doch nicht wirklich selbst verbannen, oder?? Das ist deine eigene ID!");
        }
    }
    if (
$sql!=""){
        
db_query($sql) or die(db_error(LINK));
        
output(db_affected_rows()." Bann eingetragen.`n`n");
        
output(db_error(LINK));
    }
}elseif(
$_GET[op]=="delban"){
    
$sql "DELETE FROM bans WHERE ipfilter = '$_GET[ipfilter]' AND uniqueid = '$_GET[uniqueid]'";
    
db_query($sql);
    
//output($sql);
    
redirect("user.php?op=removeban");
}elseif(
$_GET[op]=="removeban"){
    
db_query("DELETE FROM bans WHERE banexpire < \"".date("Y-m-d")."\" AND banexpire>'0000-00-00'");

    
$sql "SELECT * FROM bans ORDER BY banexpire";
    
$result db_query($sql) or die(db_error(LINK));
    
output("<table><tr><td>Ops</td><td>IP/ID</td><td>Dauer</td><td>Text</td><td>Betrifft:</td></tr>",true);
    for (
$i=0;$i<db_num_rows($result);$i++){
        
$row db_fetch_assoc($result);
        
output("<tr class='".($i%2?"trlight":"trdark")."'><td><a href='user.php?op=delban&ipfilter=".URLEncode($row[ipfilter])."&uniqueid=".URLEncode($row[uniqueid])."'>Bann&nbsp;aufheben</a>",true);
        
addnav("","user.php?op=delban&ipfilter=".URLEncode($row[ipfilter])."&uniqueid=".URLEncode($row[uniqueid]));
        
output("</td><td>",true);
        
output($row[ipfilter]);
        
output($row[uniqueid]);
        
output("</td><td>",true);
        
$expire=round((strtotime($row[banexpire])-strtotime(date("c"))) / 86400,0)." Tage";
        if (
substr($expire,0,2)=="1 "$expire="1 Tag";
        if (
date("Y-m-d",strtotime($row[banexpire])) == date("Y-m-d")) $expire="Heute";
        if (
date("Y-m-d",strtotime($row[banexpire])) == date("Y-m-d",strtotime("1 day"))) $expire="Morgen";
        if (
$row[banexpire]=="0000-00-00"$expire="Nie";
        
output($expire);
        
output("</td><td>",true);
        
output($row[banreason]);
        
output("</td><td>",true);
        
$sql "SELECT DISTINCT accounts.name FROM bans, accounts WHERE (ipfilter='".addslashes($row['ipfilter'])."' AND bans.uniqueid='".addslashes($row['uniqueid'])."') AND ((substring(accounts.lastip,1,length(ipfilter))=ipfilter AND ipfilter<>'') OR (bans.uniqueid=accounts.uniqueid AND bans.uniqueid<>''))";
        
$r db_query($sql);
        for (
$x=0;$x<db_num_rows($r);$x++){
            
$ro db_fetch_assoc($r);
            
output("`0{$ro['name']}`n");
        }
        
output("</td></tr>",true);
    }
    
output("</table>",true);
}elseif (
$_GET[op]=="debuglog"){
    
$id $_GET['userid'];
    
$sql "SELECT debuglog.*,a1.name as actorname,a2.name as targetname FROM debuglog LEFT JOIN accounts as a1 ON a1.acctid=debuglog.actor LEFT JOIN accounts as a2 ON a2.acctid=debuglog.target WHERE debuglog.actor=$id OR debuglog.target=$id ORDER by debuglog.date DESC,debuglog.id ASC LIMIT 500";
    
addnav("User Info bearbeiten","user.php?op=edit&userid=$id");
    
$result db_query($sql);
    
$odate "";
    for (
$i=0$i<db_num_rows($result); $i++) {
        
$row db_fetch_assoc($result);
        
$dom date("D, M d",strtotime($row['date']));
        if (
$odate != $dom){
            
output("`n`b`@".$dom."`b`n");
            
$odate $dom;
        }
        
$time date("H:i:s"strtotime($row['date']));
        
output("$time - {$row['actorname']} {$row['message']}");
        if (
$row['target']) output({$row['targetname']}");
        
output("`n");
    }
}elseif (
$_GET[op]==""){
    if (isset(
$_GET['page'])){
        
$order "acctid";
        if (
$_GET[sort]!=""$order "$_GET[sort]";
        
$offset=(int)$_GET['page']*100;
        
$sql "SELECT acctid,login,name,level,laston,gentimecount,lastip,uniqueid,emailaddress FROM accounts ".($where>""?"WHERE $where ":"")."ORDER BY \"$order\" LIMIT $offset,100";
        
$result db_query($sql) or die(db_error(LINK));
        
output("<table>",true);
        
output("<tr>
        <td>Ops</td>
        <td><a href='user.php?sort=acctid'>User-ID</a></td>
        <td><a href='user.php?sort=login'>Login</a></td>
        <td><a href='user.php?sort=name'>Name</a></td>
        <td><a href='user.php?sort=level'>Lev</a></td>
        <td><a href='user.php?sort=laston'>Zuletzt da</a></td>
        <td><a href='user.php?sort=gentimecount'>Treffer</a></td>
        <td><a href='user.php?sort=lastip'>IP</a></td>
        <td><a href='user.php?sort=uniqueid'>ID</a></td>
        <td><a href='user.php?sort=emailaddress'>E-Mail</a></td>
        </tr>"
,true);
        
addnav("","user.php?sort=acctid");
        
addnav("","user.php?sort=login");
        
addnav("","user.php?sort=name");
        
addnav("","user.php?sort=level");
        
addnav("","user.php?sort=laston");
        
addnav("","user.php?sort=gentimecount");
        
addnav("","user.php?sort=lastip");
        
addnav("","user.php?sort=uniqueid");
        
$rn=0;
        for (
$i=0;$i<db_num_rows($result);$i++){
            
$row=db_fetch_assoc($result);
            
$laston=round((strtotime(date("c"))-strtotime($row[laston])) / 86400,0)." Tage";
            if (
substr($laston,0,2)=="1 "$laston="1 Tag";
            if (
date("Y-m-d",strtotime($row[laston])) == date("Y-m-d")) $laston="Heute";
            if (
date("Y-m-d",strtotime($row[laston])) == date("Y-m-d",strtotime(date("c")."-1 day"))) $laston="Gestern";
            if (
$loggedin$laston="Jetzt";
            
$row[laston]=$laston;
            if (
$row[$order]!=$oorder$rn++;
            
$oorder $row[$order];
            
output("<tr class='".($rn%2?"trlight":"trdark")."'>",true);

            
output("<td>",true);
            
output("[<a href='user.php?op=edit&userid=$row[acctid]'>Edit</a>|".
                
"<a href='user.php?op=del&userid=$row[acctid]' onClick=\"return confirm('Willst du ".$row['login']." wirklich löschen?');\">Del</a>|".
                
"<a href='user.php?op=setupban&userid=$row[acctid]'>Ban</a>|".
                
"<a href='user.php?op=debuglog&userid=$row[acctid]'>Log</a>]",true);
            
addnav("","user.php?op=edit&userid=$row[acctid]");
            
addnav("","user.php?op=del&userid=$row[acctid]");
            
addnav("","user.php?op=setupban&userid=$row[acctid]");
            
addnav("","user.php?op=debuglog&userid=$row[acctid]");
            
output("</td><td>",true);
            
output($row[acctid]);
            
output("</td><td>",true);
            
output($row[login]);
            
output("</td><td>",true);
            
output($row[name]);
            
output("</td><td>",true);
            
output($row[level]);
            
output("</td><td>",true);
            
output($row[laston]);
            
output("</td><td>",true);
            
output($row[gentimecount]);
            
output("</td><td>",true);
            
output($row[lastip]);
            
output("</td><td>",true);
            
output($row[uniqueid]);
            
output("</td><td>",true);
            
output($row[emailaddress]);
            
output("</td>",true);
            
$gentimecount+=$row[gentimecount];
            
$gentime+=$row[gentime];

            
output("</tr>",true);
        }
        
output("</table>",true);
        
output("Treffer gesamt: $gentimecount`n");
        
output("CPU-Zeit gesamt: ".round($gentime,3)."s`n");
        
output("Durchschnittszeit für Seitenerzeugung: ".round($gentime/max($gentimecount,1),4)."s`n");
    }
}
page_footer();