anpera.net

anpera.net

experimental server @home
Aktuelle Zeit: Do 28 Mär, 2024 21:52

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 11 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Mi 05 Sep, 2012 16:38 
Offline
Profi
Profi
Benutzeravatar

Registriert: Mo 01 Sep, 2008 10:29
Beiträge: 118
Wohnort: Niedersachsen
Geschlecht: Männlich
LoGD: https://www.sotbd.de/about.php?op=source
Da sich unser Hoster heute Vormittag dazu entschlossen hatte die PHP Version auf Version 5.3 zu aktualisieren und im Anschluss daran gar nichts mehr ging habe ich mich dazu entschlossen hier die nötigen Änderungen zu posten, falls einige andere mit denselben Problemen "zu kämpfen" haben :)

dbwrapper.php

Suchen:
$this->bbcode_second_pass_code('', 'set_magic_quotes_runtime(0);')

Ersetzen mit:
$this->bbcode_second_pass_code('', 'ini_set('magic_quotes_runtime',0);')

Und hauptsächlich in der common.php alle Vorkommen der Funktion split() durch explode() ersetzen.

Falls das Thema zu trivial, falsch oder verbesserungswürdig ist kann man das Thema ja entsprechend anpassen, wollte nur eine kleine Hilfestellung geben ;)


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi 05 Sep, 2012 18:50 
Offline
Eingeweihter
Eingeweihter

Registriert: Mi 12 Aug, 2009 18:11
Beiträge: 65
Geschlecht: Männlich
LoGD: http://www.plueschdrache.de
Oder als faule Methode einfach beim error reporting die deprecated Meldungen abschalten:

error_reporting(E_ALL ^ E_NOTICE ^ E_DEPRECATED ^ E_USER_DEPRECATED);


Mit split() und explode() muss man ggf. ein bisschen aufpassen, da die nicht funktionsgleich sind, denn im Gegensatz zum explode() unterstützt split() auch reguläre Ausdrücke als pattern. Der Anwendungsfall kommt aber, wenn ich mich recht erinnere, im "Standard-LoGD" nicht vor, so dass die Ersetzung überall richtig ist.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do 06 Sep, 2012 15:25 
Offline
Newbie

Registriert: Mo 27 Jul, 2009 13:48
Beiträge: 1
LoGD: http://oedland.he-hosting.de/lotgb/
Hallo,
ich musste 'bei meiner Version' zusätzlich noch session_register("session"); durch session_start("session"); in der common.php ersetzen, da sonst kein Login möglich war.

Lg.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Sa 08 Sep, 2012 16:59 
Offline
Newbie

Registriert: So 30 Jan, 2011 06:52
Beiträge: 5
LoGD: http://falinn-modernite.de/
Hallöchen :-)

erst mal auch hier einen Dank an Shaddar, der so freundlich war, mir bei diesem Problem unter die Arme zu greifen.
Soweit funktioniert auch alles wieder, aber heute mußte ich feststellen, dass der User-Editor nicht mehr nutzbar ist, sobald man dort eine Veränderung vor nimmt, erscheint eine Fehlermeldung, die bei jedem User unterschiedlich ist.

Drei Beispiele:

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 'text/css"> table, tr, td { background-color:transparent; border:none; border-wi' at line 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 'http://666kb.com/i/c71oy0jbejvulsqmt.jpg">

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 '0" bgcolor="#503e20">

Vielleicht kann jemand anhand der Beispiele erkennen, wo das Problem liegt und mir weiter helfen .. und ja, ich bin da leider ein Laie.

LG
Kolja


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Sa 08 Sep, 2012 20:26 
Offline
Freak
Freak

Registriert: So 29 Jan, 2006 09:41
Beiträge: 1927
Wohnort: Schweiz
Geschlecht: Männlich
Skype: louis.huppenbauer
Du musst mit addslashes alle " und ' in den Update-Strings maskieren. Liegt vermutlich daran, dass magic-quotes halt nicht mehr läuft.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Sa 08 Sep, 2012 20:48 
Offline
Newbie

Registriert: So 30 Jan, 2011 06:52
Beiträge: 5
LoGD: http://falinn-modernite.de/
@Harthas.. Danke für die Hilfestellung, leider bin ich wie erwähnt Laie.

wenn ich Dich richtig verstanden habe, soll ich alle ' und " mit einem / versehen, aber wo genau? Es wäre nett, wenn Du es für einen Fachidioten wie mich etwas genauer erklären könntest. Schon mal danke im Voraus :)


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So 09 Sep, 2012 02:32 
Offline
Freak
Freak

Registriert: So 29 Jan, 2006 09:41
Beiträge: 1927
Wohnort: Schweiz
Geschlecht: Männlich
Skype: louis.huppenbauer
Dort wo im User Editor das Insert-Query zusammengestellt wird, musst du die von der showform-Funktion zusammengestellten Werte die Funktion addslashes anwenden - Genau wo das ist kann ich dir leider auch nicht mehr sagen.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So 09 Sep, 2012 03:10 
Offline
Newbie

Registriert: So 30 Jan, 2011 06:52
Beiträge: 5
LoGD: http://falinn-modernite.de/
Wirklich verstanden habe ich es leider immer noch nicht, daher bin ich mal so frei und poste die user.php .. vielleicht könntest Du mir anhand dessen erklären, was ich wo ändern muß?

PHP:
<?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("Adminjail","admin_jail.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,Bewohner,1,Chefredakteur,2,Stadtwächter,3,Herrscher",
"admin"=>"Die Klasse des Users,enum,0,Keine Klasse,1,RPG-Chara,2,Mix-Chara,3,Level-Chara,4,Chefredakteur,5,Spezielle-Chara",

"User Infos,title",
"name"=>"Display Name",
"title"=>"Titel (muss auch in Display Name)",
"ctitle"=>"Eigener Titel (muss auch in Display Name)",
"namecheck"=>"Palisaden,int",
"rlalter"=>"Alter (Beispiel: 29.1982-12-24.A)",
"sex"=>"Geschlecht,enum,0,Männlich,1,Weiblich",
//"aera"=>"Spielzeit,enum,0,Unbekannt,1,Vergangenheit,2,Gegenwart",
"age"=>"Tage seit Level 1,int",
"dragonkills"=>"Drachenkills,int",
"dragonage"=>"Alter beim letzten Drachenkill,int",
"bestdragonage"=>"Jüngstes Alter bei einem Drachenkill,int",
"bio"=>"Biographie,textarea,120,50",
"avatar"=>"Avatar:",

"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",
"rppunkte"=>"RP-Münzen,int",
"rppunkte_spend"=>"RP-Münzen ausgegeben,int",
"donation"=>"DOnationPOints,int",

"Sklaven,title",
"slave"=>"Sklave von (22002200 = zum Verkauf),int",

"Bewerbungslevel,title",
"chateau"=>"Escort-Level,enum,0,nicht dabei,2,beworben,4,Mitarbeiter,5,Geschäftsführer",

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

"Kindersystem,title",
"ssstatus"=>"Schwanger?,enum,0,Nein,1,Ja",
"ssmonat"=>"Schwangerschafts Monat (16 Std),int",
"sserzeug"=>"ID des Vaters,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",
"seenlover"=>"Geflirtet,bool",
"seenbard"=>"Barden gehört,bool",
"charm"=>"Charme,int",
"seendragon"=>"Drachen heute gesucht,bool",
"rport"=>"Hat RP Ort erstellt,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",
"ordendk"=>"Orden eingetauscht,int",

"Arbeit,title",
"moonlight"=>"Moonlight,int",
"gay"=>"Gay-Point,int",
"seven"=>"Seven Sins,int",
"chateau"=>"Chateau,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"
);

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

$row['bio'] = stripslashes($row['bio']);

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("c")."-".(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 ";

if ($_POST['bio']) {
$_POST['bio'] = closetags(stripslashes($_POST['bio']),'`i`b`c`H');
}

// 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=\"".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=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("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 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();
?>


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So 09 Sep, 2012 07:41 
Offline
Newbie

Registriert: So 30 Jan, 2011 06:52
Beiträge: 5
LoGD: http://falinn-modernite.de/
Kleines Update .. nachdem ich mich versucht habe, in die Materie einzulesen, habe ich in der user.php die drei Vorkommen von stripslashes() gegen addslashes() ausgetauscht und nun funktioniert der Usereditor wieder. :o
Bevor ich mir nun erlaube, mir auf die Schulter zu klopfen, weil ich vielleicht doch nicht ganz so dumm bin wie ich dachte, würde ich gern die Frage in den Raum stellen, ob mein Gefummel nun vielleicht irgendwo anders Fehler werfen könnte/wird. :???:

Zusatz: wie ich gerade sehe, wird nun in den Bios die Zeichen ' und " gleich mehrfach maskiert. Kleiner Auszug:
$this->bbcode_second_pass_code('', '<div style=\\\'width:980px; margin:0 auto; overflow:hidden;\\\'><br />
<br />
<center><table border=\\\"0\\\" bgcolor=\\\"#503e20\\\"><td>
<tr>
<td width=650>
<div align=\\\"center\\\"><img src=\\\"http://666kb.com/i/c26oucbnufihtcipu.jpg\\\" title=\\\"hosted by 666kb.com\\\"/> <br />`n`n')

Also scheint es doch nicht richtig zu sein?


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mo 10 Sep, 2012 18:24 
Offline
Profi
Profi
Benutzeravatar

Registriert: Mo 02 Feb, 2009 21:11
Beiträge: 168
Geschlecht: Männlich
LoGD: salator.selfhost.de/lotgd
Wie du bereits bemerkt hast war deine Änderung Mist ;)
stripslashes entfernt die Markierungen, weil die zur Anzeige oder zur Weiterverarbeitung meist stören.
addslashes fügt die Maskierungen wieder ein.

Da du unterschiedliche Fehlermeldungen hast scheint das Problem aus dem bio-Eintrag zu kommen. Die zugehörige Stelle könnte das hier sein:
if ($_POST['bio']) {
$_POST['bio'] = closetags(stripslashes($_POST['bio']),'`i`b`c`H');
}
Da sollte es helfen, noch ein addslashes drumherum zu bauen:
$this->bbcode_second_pass_code('', '
if ($_POST['bio']) {
$_POST['bio'] = addslashes(closetags(stripslashes($_POST['bio']),'`i`b`c`H'));
}
')
Ich habe jetzt nicht geprüft ob im weiteren Verlauf nochmal der unmaskierte String gebraucht wird. Und auch nicht, ob es noch mehr Stellen dieser Art gibt. Eventuell wäre es überhaupt sinnvoller, unten in der while-Schleife wo der sql-String zusammengebaut wird jedes $val-Feld durch addstripslashes zu schicken.

_________________
if(date("ymmd")=="10050502") echo("Der alte Sack wird heute 40");


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di 11 Sep, 2012 22:01 
Offline
Profi
Profi

Registriert: Mo 20 Apr, 2009 00:30
Beiträge: 125
an geeigneter Stelle in der common.php (also ziemlich oben...)

PHP:
if (!get_magic_quotes_gpc())
{
array_walk_recursive($_GET,'own_addslashes');
array_walk_recursive($_POST,'own_addslashes');
array_walk_recursive($_COOKIE,'own_addslashes');
array_walk_recursive($_REQUEST,'own_addslashes');
}else{
array_walk_recursive($_GET,'addstripslashes');
array_walk_recursive($_POST,'addstripslashes');
array_walk_recursive($_COOKIE,'addstripslashes');
array_walk_recursive($_REQUEST,'addstripslashes');
}

function own_addshlashes(&$item, $key)
{
$item = addslashes($item);
}


Weiß jetzt nicht gerade ob addstripslashes auch in der non ds version exisitert.

PHP:
function addstripslashes(&$item, $key)
{
$item = addslashes(stripslashes($item));
}


ungetestet aber sollte schon passen.

;)

p.s.: Für DB-Querys nicht auf addslashes ausruhen, mysql_real_escape_string ist hier dein Freund. Möglicherweise vorher noch nen stripslashes je nach config.
p.p.s.: Wende nicht stripslashes auf einem mit mysql_real_escape_string escaped string an :)


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

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 19 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:  
POWERED_BY
Deutsche Übersetzung durch phpBB.de
anpera.net - Impressum