anpera.net

anpera.net

experimental server @home
Aktuelle Zeit: Di 10 Jun, 2025 03:32

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 17 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Sa 06 Dez, 2008 17:59 
Offline
Lehrling
Lehrling
Benutzeravatar

Registriert: Mi 08 Okt, 2008 18:34
Beiträge: 46
Hallo.. ich hab ein Problem.. ich habe 3 Server.. die Immer online sind.. ich habe die Letzten Tage NICHT an den scripten herrum gefummelt und dennoch tauchte ein Fehelr auf allen drei servern Paralel auf wie aus dem nichts und zwar:

INSERT INTO commentary (postdate,section,author,comment) VALUES (now(),'kitsunevillage',1,"`^"")
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"`^"")' at line 1


sprich er will das " nicht anerkennen, was natürlich mist ist da so gut wie 90% der user ihr gesprochenes in " setzen.. hättet ihr vielelicht eine Idee?


Das sagt der Support dazu:





Zitat:
Hallo,

in welchem Kontext steht denn die Abfrage? Wenn Sie sie in einer Variable definieren und als Tags ein " nehmen, kann die Abfrage nicht funktionieren.
Beispiel: $query = "INSERT INTO commentary (postdate,section,author,comment) VALUES (now(),'kitsunevillage',1,"`^"")";
Dieser Umstand leuchtet Ihnen hoffentlich ein. In jedem Fall hat das Problem nix mit unseren Servereinstellungen zu tun.
Sie mischen hier einfach MySQL-Syntax mit irgendwelchen Eingaben die schlecht oder nicht gefiltert werden.

MySQL verwendet zur Trennung zwischen einzelnen Feldern ein '. Das heißt in ihrem Fall:
INSERT INTO commentary (postdate,section,author,comment) VALUES (now(),'kitsunevillage',1,'"`^""');

Wenn Sie jedoch anstelledessen ein " schreiben, ist der Fehler nicht verwunderlich, da ein " hier nicht zu suchen hat. Wenn dann, können Sie "" in die Datenbank schreiben,
sofern Sie wie in meinem Beispiel das Feld begrenzen durch zwei '' am Anfang und am Ende.

Obwohl dieser Umstand schon für sich allein problemerklärend ist, kommt noch dazu, dass -selbst wenn!- MySQL als Trennoperator zwischen einzelnen Feldern " verwenden würde,
dieser hier nicht richtig interpretiert werden würde, da man nicht am Anfang ein " und am Ende "" verwenden kann.

Weiters empfehle ich Ihnen als sanitizing function auf mysql_real_escape_string zurückzugreifen um Benutzereingaben zu überprüfen. Verwenden Sie nämlich als Seperator in MySQL ein '
und lassen dem Benutzer ebenfalls ein ' eingeben, ermöglichen Sie SQL-Injection (http://de.wikipedia.org/wiki/SQL-Injection).

Mit freundlichen Grüßen,
Johannes Feichtner
Elite Hosting Support

UND

Zitat:
> Hallo,
>
> nunja, es wurde nun auf PHP 5.2.7 und Suhosin 0.9.27 upgraded. Es ist
> davon auszugehen, dass Suhosin hier strikter die Syntax analysiert um
> eben die
> genannte Möglichkeit zur SQL-Injection einzugrenzen bzw. zu verhindern.
> Sollte die Anfrage in der von Ihnen genannten Form per se möglich
> gewesen sein,
> dann war das lediglich eine Art "Toleranz" des Servers (vergleichbar mit
> der Toleranz eines Browsers bei HTML-Code). Über die Änderungen die
> durch ein
> Upgrade entstehen, haben wir keinen Einfluss und wenn es darum geht,
> dass das Upgrade sogar etwas "richtiggestellt" bzw. in puncto Sicherheit
> verbessert hat,
> dann kann ich nur dazu aufrufen, saubere und korrekte Abfragen
> durchzuführen.
>
> Mit freundlichen Grüßen,
> Johannes Feichtner
> Elite Hosting Support


meine Lösung: ich habe die Bio und Commentare durch preg_replace gefiltert und " mit ' erstzt was natürlich nur ne notlösung ist und keine dauerhafte , da ich keien User im Usereditor bearbeiten kann die noch nicht ihre Bio gespeichert haben, sprioch ein " in der Bio haben.. dann bekomm ich ne ähnliche fehlermeldung und lande im UE badnav^^


ich hoffe jemand von euch hat eine idee...^^

€dit: 2. Support quote hionzugefügt.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Sa 06 Dez, 2008 18:45 
Offline
Held
Held

Registriert: Fr 22 Feb, 2008 06:39
Beiträge: 276
Wohnort: Solingen
LoGD: http://apocalypse-rpserver.de/source.php
könntest du mal einen Teil davon hier hinein posten?


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Sa 06 Dez, 2008 19:13 
Offline
Lehrling
Lehrling
Benutzeravatar

Registriert: Mi 08 Okt, 2008 18:34
Beiträge: 46
wovon von dem kommentarfilter?

klar

$dasisverboten= 'javascript:|onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup|onabort|onfocus|onload|onblur|onchange|onerror|onreset|onselect|obsubmit|onunload|"|style';
$commentary = preg_replace("'$dasisverboten'","'",soap($_POST[insertcommentary][$section]));

rot was durchsucht wird.. grün mit dem es ersetzt wird^^


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So 07 Dez, 2008 00:52 
Offline
Held
Held
Benutzeravatar

Registriert: Mo 17 Apr, 2006 08:39
Beiträge: 290
Wohnort: Lübeck
Geschlecht: Männlich
LoGD: http://antara-rosadrache.de
Skype: eichi-san
Na, die escape-Funktion magic_quotes, die generell angeschaltet sein sollte hat dein Betreiber durch das Update wohl ausgeschaltet, mit addslashes oder eben magic_qutes kannst du die SQLs wieder ausführen, ich kann nur nicht ganz nachvollziehen warum das ausgeschaltet wird, schließlich ist es (wenn man nicht so sauber arbeitet und alle SQL-Anweisungen mit addslashes oder magic_quotes einzeln verarbeitet, und das ist GANZ SICHER nicht der Fall in LogD) eine kritische Sicherheitslücke!

Also, frag nochmal nach bzw. falls du selber Zugriff auf deine php.ini hast, setze die verschiedenen magic_quotes wieder auf "on"!

magic_quotes_gpc
magic_quotes_runtime

Davon mal abgesehen, ich seh grad, dass magic_quotes in PHP6 abgeschafft wird, was solls denn für eine Alternative geben? oO

EDIT
Ich bin blöed xD Mach einfach in der Ausführung von db_query ein addslashes() oder mysql_real_escape_string() (Letzteres ist sicherer) um die SQL herum, ich hoffe du nutzt in deinem Code überall db_query anstatt mysql_query ;)

EDIT II
Mal so versuchen..
dbwrapper.php suchen:
$this->bbcode_second_pass_code('php', 'function db_query($sql){ ')

ersetzen durch:
$this->bbcode_second_pass_code('php', 'function db_query($sql){
    
$sql mysql_real_escape_string($sql); ')

LG, Eichi

_________________
Ist es nicht die Weisheit, die ein Mensch zu erlangen sucht?!
Der Knochen kommt nicht von alleine zum Hund, schön wärs ._.

Schokopudding, der sich von alleine kochen kann.......


BLUBBBEL!


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So 07 Dez, 2008 13:40 
Offline
Lehrling
Lehrling
Benutzeravatar

Registriert: Mi 08 Okt, 2008 18:34
Beiträge: 46
also die php.inf kann ich leider selbst nicht ändern.. und der sevrerprovider weigert sich strikt dei Änderung rückgängig zumachen weils ja sooooo eine große sicherheitslücke in deren augen ist... *grml*

udn deine Änderung an der DBwrapper ändert elider an dem Problem auch nichts :(
we es aussieht darf ich wirklich noch jede weitere angabe in der Prefs filtern, damit ich die leute im UE bearbeiten kann *seufz*
und dann auch noch das if abschalten das aussagt das nur gespeichert wird wenn was verändert wurde, so das auch sicher alles mit einem speichern ersetzt wird.. ~.~ oder gibt es einen befehl der alle bios so iwei einmal updatet?^^


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So 07 Dez, 2008 15:43 
Offline
Freak
Freak

Registriert: So 30 Okt, 2005 17:48
Beiträge: 1408
Wohnort: PB
Geschlecht: Männlich
LoGD: http://dav.blood-reaver.de/lotgd/
äähm, wenn du schon über die eingaben ein pre_repalce laufen lässt, warum maskierst du dann nich einfach das Zeichen, anstatt es mit einem anderen, ebenso vom problem betroffenen Zeichen zu ersetzen. Das kann man manuell machen oder eben (besser) mit den schon genannten Kandidatem addslashes und mysql_real_escape_string. Speziell zu letzterem wäre ein db_escape-wrapper für lotgd recht sinnvoll.

Du kannst natürlich auch gleich die ganz große Keule umsteigen, mysqli verwenden und dann prepared Statements für deine Eingaben nutzen - IMHO die sauberste und sicherste Methode derzeit

_________________
Mehr oder minder inaktiv


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So 07 Dez, 2008 22:05 
Offline
Lehrling
Lehrling
Benutzeravatar

Registriert: Mi 08 Okt, 2008 18:34
Beiträge: 46
uff das war jetzt chinesisch für mich xD ich muss den post die woche mal zusammen googeln xD hab grad zu hause leider kein inet sondenr bin im inet cafe^^


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So 07 Dez, 2008 23:50 
Offline
Freak
Freak

Registriert: So 30 Okt, 2005 17:48
Beiträge: 1408
Wohnort: PB
Geschlecht: Männlich
LoGD: http://dav.blood-reaver.de/lotgd/
Na bevor du noch allzu sehr suche must will ich das noch mal etwas umfangreicher Formulieren:
Dein Problem ist ja, wenn ich es recht sehe, das du einen String >>>`^"<<< (ohne die <<< versteht sich ^^) so in dieser Form in die DB schreiben willst und dein Hoster sich muckiert, das Anführungszeichen ja eventuell für SQL-Injections genutzt werden könnten. Nun gibt es verschiedene Möglichkeiten das Problem aus der Welt zu bringen.

A) Du maskierst/escapest die Anführungszeichen, machst also aus einem >>>"^<<< ein >>>\"^<<< - dadurch Verliert das Zeichen eben seine "Meta-Fähigkeit", also seine Funktion als Zeichenketten-Begrenzer in PHP oder MySQL und wird zu einem einfachen Zeichen. Das kannst du eben auf verschiedene Weisen machen:
a1) per preg_replace, str_replace oder ähnliches - also "per Hand", was aber nicht so ganz zu empfehlen ist
a2) Du nimmst die php-Funktion addslashes, die das ganze automatisch und auch recht sauber löst.
a3) Du nimmst die MySQL-spezifische Variante mysql_real_escape_string - die das ganze auch sehr sauber und sicher löst.
Da bei deinem Hoster noch irgendeine zusatzebene in PHP eingeklinkt ist, kann es sein, das Varianten nicht funktioinieren bzw. immer noch gemäckert wird - einfach mal ausprobieren. Wichtig ist hier natürlich, dass du die Texte an der richtigen Stelle maskierst, aber das wird sich (spätestens nach ein bisschen testen) schon finden.
B) Du benutzt die modernere Schnittstelle mysqli und die damit erschienene unterstützung für Prepared Statements. Dazu ist allerdings etwas mehr aufwand von nöten, da die Art, wie Queries gesendet werden dort prinzipiell etwas abweicht. Diese technik ist allerdings extrem sicher und wird an vielen Stellen empfohlen - speziell bei vielen Querys gleicher Struktur aber unterschiedlicher Daten ist es sogar schneller als die normalen Querys. Mehr dazu findest du in der PHP-Dokumentation oder sicher auch bei Google.

Letztenendes wäre es auf jeden Fall gut, wenn du deine Ergebnisse und die Lösung hier posten könntest, damit auch andere mit gleichen problemen nicht lange suchen müssen und man daraus vielleicht so gar eine allgemeine Maskierungsfunktion (z.B. db_escape) entwickeln könnte, die diese Aufgaben kapselt.

Grüße,
Auric

_________________
Mehr oder minder inaktiv


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mo 08 Dez, 2008 11:41 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3925
Wohnort: Basel
Geschlecht: Männlich
Ich empfehle die MySQLi-Prepared-Statements *nur* bei Queries, die keine Einträge zurückliefern. Bei einem Select ist das ERgebnis nämlich äusserst hackelig...
Als Pille für Prepared Statements habe ich allerdings mal einen Imitator geschrieben, der das Verhalten von PDO (Das IMO sehr gut ist) imitiert:

$this->bbcode_second_pass_code('', 'function db_query_secure($sql, $args) {
/**
* db_query_secure()
* Eine Wrapper für mysql_query mit Vorkehrungen gegen SQL-Injections
* Imitiert PDO::Prepare und PDO::Execute
*
* Version 1.0 vom 6. August 2008
*
* 2008 by Basilius Sauter
* Lizenziert unter der GNU GPL in Version 2 oder neuer
* Basiert auf der Originalen Funktion db_query und dem MySQL-Wrapper
* des Engelsreiches
*/

# Verfügbarmachen einiger Variablen für die Zeitauswertung
global $dbqueriesthishit, $dbtimethishit;

# Einfügen der Argumente und maskieren derselbigen
foreach($args as $key => $value) {
# Maskieren von ? und : im Argument, sofern keine Zahl vorhanden ist
if(is_int($value) === false AND is_numeric($value) === false) {
$value = str_replace('?', '!-!QUESTION_MARK_QWERTZU!-!', $value);
$value = str_replace(':', '!-!DOUBLE_POINT_QWERTZU!-!', $value);
}

if($key == '?' OR is_numeric($key)) {
if(is_int($value) OR is_float($value)) {
# Integer und Fliesskommazahlen enthalten keine Gefährlichen Zeichen. Eine Maskierung oder das
# Setzen in Fuss-Zeichen (') nicht notwendig und kann zu verfälschenden Resultaten führen
$id = md5(mt_rand(0, 30000));
$sql = preg_replace('/\?/', ":PREREPLACE_$id", $sql, 1); # preg_replace, da str_replace keine Limitationen beherrscht
$sql = str_replace(":PREREPLACE_$id", $value, $sql);
}
else {
$value = db_real_escape_string($value); # Wrapper-Funktion für mysql_real_escape_string()
$id = md5(mt_rand(0, 30000));
$sql = preg_replace('/\?/', ":PREREPLACE_$id", $sql, 1); # preg_replace, da str_replace keine Limitationen beherrscht
$sql = str_replace(":PREREPLACE_$id", "'$value'", $sql);
}
}
elseif(substr($key, 0, 1) == ':') {
if(is_int($value) OR is_float($value)) {
# Integer und Fliesskommazahlen enthalten keine Gefährlichen Zeichen. Eine Maskierung oder das
# Setzen in Fuss-Zeichen (') nicht notwendig und kann zu verfälschenden Resultaten führen
$sql = str_replace($key, "$value", $sql);
}
else {
$value = db_real_escape_string($value); # Wrapper-Funktion für mysql_real_escape_string()
$sql = str_replace($key, "'".$value."'", $sql);
}
}
}

# Demaskieren der Platzhalter für ? und :
$sql = str_replace('!-!QUESTION_MARK_QWERTZU!-!', '?', $sql);
$sql = str_replace('!-!DOUBLE_POINT_QWERTZU!-!', ':', $sql);

# Zeitmessung für DB-Statistik
$dbqueriesthishit++;
$dbtimethishit -= getmicrotime();

# Funktionsname zusammensetzen
$fname = DBTYPE."_query";

# Schreiben in die Datenbank
$res = $fname($sql, LINK);

# Fehlerausgabe
if($res === false) {
global $session;
if($session['user']['superuser'] >= 3) {
printf("<pre>%s</pre>", HTMLSpecialchars($sql));
}

print db_error(LINK);
exit;
}

# Zeitmessung für DB-Statistik
$dbtimethishit += getmicrotime();

# Rückgabe
return $res;
}

function db_real_escape_string($input) {
$fname = DBTYPE."_real_escape_string";
$output = $fname($input);
return $output;
}')

Anwendung:

$this->bbcode_second_pass_code('', '$args = array(
'Testeingabe mit bösen Zeichen "\' \\',
':var' => 'Testeingabe mit bösen Zeichen "\' \\',
3450.345, # Irgend eine Zahl
);

db_query_secure("INSERT INTO testtable (field1, field2, field3) VALUES (?, :var, ?)", $args);')

Im richtigen Server-Ablauf ungetestet - funktionierte aber im Test-Case. Übernehme aber natürlich - wie immer - keine Garantie.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mo 08 Dez, 2008 17:04 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3925
Wohnort: Basel
Geschlecht: Männlich
Noch eine (intressante) Anmerkung: Falls du einen Server mit PHP 5.2.7 hat - schreibe schleunigst deinem Provider, er solle PHP auf 5.2.6 zurück rollen. PHP 5.2.7 wurde zurück gezogen, weil ein schwerwiegender Bug im Zusammenhang mit magic_quotes_gpc aufgetreten ist.

http://www.heise.de/security/PHP-5-2-7- ... ung/120072


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di 09 Dez, 2008 09:10 
Offline
Freak
Freak

Registriert: So 29 Jan, 2006 09:41
Beiträge: 1927
Wohnort: Schweiz
Geschlecht: Männlich
Skype: louis.huppenbauer
Entwarnung.
Gestern noch wurde PHP 5.2.8 veröffentlicht. Mit dem magic_quotes_gpc-Bug-Fix. Sozusagen.
Ist also wieder sicher.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi 10 Dez, 2008 16:54 
Offline
Meister
Meister
Benutzeravatar

Registriert: Mo 05 Feb, 2007 12:33
Beiträge: 375
Wohnort: Hattingen
Geschlecht: Männlich
LoGD: http://www.alvion-logd.de/logd/
Anderswelt hat geschrieben:
> nunja, es wurde nun auf PHP 5.2.7 und Suhosin 0.9.27 upgraded.
...
> davon auszugehen, dass Suhosin hier strikter die Syntax analysiert ...

Das auch: Suhosin (auch bekannt als Hardened PHP) begrenzt unter anderem die maximale Tiefe von Arrays die mittels $_POST oder $_GET übergeben werden können. Auch die maximale Größe der Indices oder gar die Größe des Inhalts in einer mit $_POST übergeben Variable kann begrenzt sein.
Wenn ich an die Standardeinstellungen denke die suhosin mit brachte, nach dem ich meinem Server mal eine Neuinstallation gegönnt habe kann ich nur für dich hoffen dass dein Hoster da um einiges großzügiger ist. Mit den Default-Einstellungen ist der Betrieb eines 0.97er LoGD nicht möglich. Zum Glück bin ich der Herr aller Ini-Dateien auf dem Server. Aber auf einem gemieteten Webspace ... wär interessant zu erfahren ob sich der Hoster dies bezüglich auf Änderungswünsche einlässt.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So 04 Jan, 2009 15:30 
Offline
Eingeweihter
Eingeweihter
Benutzeravatar

Registriert: Fr 10 Aug, 2007 17:18
Beiträge: 76
Wohnort: Germany
Geschlecht: Weiblich
Na ja, ich hab im Prinzip nur ein kleines Problem mit den Bios, hab aber grad keinen anderen Thread gefunden.
Mein Problem sieht in etwa so aus: Ich hab nun für die Profil/Inventar ein großes Bioschreibfeld und das funzt auch alles wunderbar. Nur, wenn ich in den User Editor geh, dann verschiebt sich die Bio auf's übelste, ich denke, das hängt mit dem einzeiligen Schreibfenster noch im UE zusammen. Ich weiß aber grad auch gar net wie ich das Tippfeld größer kriegen könnte, weil mein Bioschreibfeld hat mir jemand gemacht und derjenige is derzeit net online. Könnt mir da vielleicht wer helfen? Wäre lieb. ^^

Gruß, Llynya

_________________
Jeder fängt mal klein an
und ich bin noch ganz klein. ^^
Habt nachsicht mit mir....


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So 04 Jan, 2009 16:56 
Offline
Freak
Freak
Benutzeravatar

Registriert: Sa 28 Aug, 2004 18:48
Beiträge: 1712
Llynya hat geschrieben:
Na ja, ich hab im Prinzip nur ein kleines Problem mit den Bios, hab aber grad keinen anderen Thread gefunden.
Mein Problem sieht in etwa so aus: Ich hab nun für die Profil/Inventar ein großes Bioschreibfeld und das funzt auch alles wunderbar. Nur, wenn ich in den User Editor geh, dann verschiebt sich die Bio auf's übelste, ich denke, das hängt mit dem einzeiligen Schreibfenster noch im UE zusammen. Ich weiß aber grad auch gar net wie ich das Tippfeld größer kriegen könnte, weil mein Bioschreibfeld hat mir jemand gemacht und derjenige is derzeit net online. Könnt mir da vielleicht wer helfen? Wäre lieb. ^^

Gruß, Llynya


link zum source des usereditors pls

_________________
~Inaktiv und Abwesend solange Mysql hier Moderatorenrechte hat~


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So 04 Jan, 2009 17:30 
Offline
Eingeweihter
Eingeweihter
Benutzeravatar

Registriert: Fr 10 Aug, 2007 17:18
Beiträge: 76
Wohnort: Germany
Geschlecht: Weiblich
Ich kann nur meine php hier veröffentlichen. Source spackt. ;)
Ich hätts ja gern mit nem Spoiler versteckt, damit das nich so groß ist, aber irgendwie geht das hier nicht so... :(

$this->bbcode_second_pass_code('', '<?php

// 15082004

require_once "common.php";
isnewday(3);

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("Benutzereditor","user.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",
"banoverride"=>"Verbannungen übergehen,bool",
"superuser"=>"Superuser,enum,0,Bürger,1,Vertrauter,2,Wächter,3,Avatar,4,Ältester",

"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",
// we can't change this this way or their stats will be wrong.
// "race"=>"Race,enum,0,Unknown,1,Troll,2,Elf,3,Human,4,Dwarf,5,Echse",
"age"=>"Tage seit Level 1,int",
"dragonkills"=>"Drachenkills,int",
"dragonage"=>"Alter beim letzten Drachenkill,int",
"bestdragonage"=>"Jüngstes Alter bei einem Drachenkill,int",
"bio"=>"Bio",

"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",

"Spezialitäten,title",
"specialty"=>"Spezialität,enum,0,Unspezifiziert,1,Dunkle Künste,2,Mystische Kräfte,3,Diebeskunst",
"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",

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


"Ausstattung,title",
"gems"=>"Edelsteine,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 = Viviana/Gwyn),int",
"charisma"=>"Flirts (4294967295 = verheiratet mit Partner),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",
"avatar"=>"Avatar:",

"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"
);

if ($_GET[op]=="lasthit"){
$output="";
$sql = "SELECT output FROM accounts WHERE acctid='{$_GET['userid']}'";
$result = db_query($sql);
$row = db_fetch_assoc($result);
echo str_replace("<iframe src=","<iframe Xsrc=",$row['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));
output("<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("<input type='submit' class='button' name='newday' value='Neuen Tag gewähren'>",true);
output("<input type='submit' class='button' name='fixnavs' value='Defekte Navs reparieren'>",true);
output("<input type='submit' class='button' name='clearvalidation' value='E-Mail als gültig markieren'>",true);
output("</form>",true);

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']}");
output("<input type='submit' class='button' value='Speichern'>",true);
showform($userinfo,$row);
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("r")."-".(86500/getsetting("daysperday",4))." seconds"))."' WHERE acctid='$_GET[userid]'";
}elseif($_POST[fixnavs]!=""){
$sql = "UPDATE accounts SET allowednavs='',output='' WHERE acctid=$_GET[userid]";
}elseif($_POST[clearvalidation]!=""){
$sql = "UPDATE accounts SET emailvalidation='' WHERE acctid='$_GET[userid]'";
}
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"){
$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));
if ($_GET['returnpetition']!=""){
header("Location: viewpetition.php?op=view&id={$_GET['returnpetition']}");
}else{
header("Location: user.php");
}

exit();
}elseif ($_GET[op]=="del"){
$sql = "SELECT name from accounts WHERE acctid='$_GET[userid]'";
$res = db_query($sql);
// inventar und haus löschen und partner und ei freigeben
if ($_GET[userid]==getsetting("hasegg",0)) savesetting("hasegg",stripslashes(0));
$sql = "UPDATE items SET owner=0 WHERE owner=$_GET[userid]";
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 = "UPDATE accounts SET charisma=0,marriedto=0 WHERE marriedto=$_GET[userid]";
db_query($sql);
$sql = "DELETE FROM pvp WHERE acctid2=$_GET[userid] OR acctid1=$_GET[userid]";
db_query($sql) or die(db_error(LINK));
$sql = "DELETE FROM accounts WHERE acctid='$_GET[userid]'";
db_query($sql);
output( db_affected_rows()." Benutzer gelöscht.");
while ($row = db_fetch_assoc($res)) {
addnews("`#{$row['name']} 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=\"".HTMLSpecialChars($row[lastip])."\">`n",true);
output("<input type='radio' value='id' name='type'> ID: <input name='id' value=\"".HTMLSpecialChars($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("r")."+$_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("r"))) / 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=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=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("r"))-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("r")."-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 diesen User 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[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();
?>
')

_________________
Jeder fängt mal klein an
und ich bin noch ganz klein. ^^
Habt nachsicht mit mir....


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So 04 Jan, 2009 17:45 
Offline
Freak
Freak
Benutzeravatar

Registriert: Sa 28 Aug, 2004 18:48
Beiträge: 1712
naja das reicht halt net.. brauch auch die datei wo du die bio als user speicherst..

jedenfalls musst du im usereditor den bereich "bio" halt anpassen auf die daten, die du auch beim user nutzt. ohne direkten sourcelink ist das halt immer doof aber denke der tipp sollte ausreichen, v.a. weil das hier shcon mehrfach disktutiert wurde

_________________
~Inaktiv und Abwesend solange Mysql hier Moderatorenrechte hat~


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So 04 Jan, 2009 17:51 
Offline
Eingeweihter
Eingeweihter
Benutzeravatar

Registriert: Fr 10 Aug, 2007 17:18
Beiträge: 76
Wohnort: Germany
Geschlecht: Weiblich
Aso, ich glaub ich weiß was du meinst. Danke. ^^

_________________
Jeder fängt mal klein an
und ich bin noch ganz klein. ^^
Habt nachsicht mit mir....


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 17 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

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


Du darfst keine neuen Themen in diesem Forum erstellen
Du darfst keine Antworten zu Themen in diesem Forum erstellen
Du darfst deine Beiträge in diesem Forum nicht ändern
Du darfst deine Beiträge in diesem Forum nicht löschen
Du darfst keine Dateianhänge in diesem Forum erstellen

Suche nach:
Gehe zu:  
cron
POWERED_BY
Deutsche Übersetzung durch phpBB.de
anpera.net - Impressum