anpera.net
https://anpera.homeip.net/phpbb3/

Changes Log
https://anpera.homeip.net/phpbb3/viewtopic.php?f=26&t=317
Seite 3 von 3

Autor:  anpera [ Di 06 Dez, 2005 19:48 ]
Betreff des Beitrags: 

Anpassung an PHP 5.1.x

Nachdem die PHP-Entwickler mal wieder an der Datumsfunktion herumgebastelt haben und dadurch LoGD - mal wieder - fehlerhaft arbeitet, gibts hier eine Bastelanleitung, mit der LoGD wieder flott gemacht werden kann, ohne dabei mit anderen PHP-Version inkompatibel zu werden:
(Außerdem wird dadurch der "Windows does not support dates prior to midnight ..."-Bug endgültig behoben.)
  • common.php:[php]//// Finden:
    function sql_error($sql){


    //// DAVOR einfügen:
    function timetotomorrow($what="array"){
    $time = gametime();
    $tomorrow = mktime(0,0,0,date('m',$time),date('d',$time)+1,date('Y',$time));
    $secstotomorrow = $tomorrow-$time;
    $realsecstotomorrow = round($secstotomorrow / (int)getsetting("daysperday",4));
    $hours=(int)($realsecstotomorrow/60/60);
    $minutes=(int)($realsecstotomorrow/60)-$hours*60;
    $seconds=$realsecstotomorrow-($hours*3600+$minutes*60);
    if ($what=="hours"){
    return($hours);
    }elseif ($what=="minutes"){
    return($minutes);
    }elseif ($what=="seconds"){
    return($seconds);
    }elseif ($what=="realsecs"){
    return($realsecstotomorrow);
    }else{
    return(array(
    "hours"=>$hours,
    "minutes"=>$minutes,
    "seconds"=>$seconds,
    "realsecs"=>$realsecstotomorrow
    ));
    }
    }


    //// Finden (falls vorhanden):
    $time = gametime();
    $tomorrow = strtotime(date("Y-m-d H:i:s",$time)." + 1 day");
    $tomorrow = strtotime(date("Y-m-d 00:00:00",$tomorrow));
    $secstotomorrow = $tomorrow-$time;
    $realsecstotomorrow = round($secstotomorrow / (int)getsetting("daysperday",4));
    $charstat.=appoencode(templatereplace("statrow",array("title"=>"Nächster Tag","value"=>date("G\\h, i\\m, s\\s \\",strtotime("1980-01-01 00:00:00 + $realsecstotomorrow seconds")))),true);


    //// Ersetzen durch:
    $tomorrow = timetotomorrow();
    $charstat.=appoencode(templatereplace("statrow",array("title"=>"Nächster Tag","value"=>"{$tomorrow['hours']}h, {$tomorrow['minutes']}m, {$tomorrow['seconds']}s")),true);[/php]
  • about.php:[php]//// Finden:
    "Nächster neuer Tag: ".date("h:i:s a",strtotime(date("r")."+$realsecstotomorrow seconds"))." (".date("H\\h i\\m s\\s",strtotime("1975-06-10 00:00:00 + $realsecstotomorrow seconds"))."),viewonly",


    //// Ersetzen durch:
    "Nächster neuer Tag: ".date("h:i:s a",strtotime(date("r")."+$realsecstotomorrow seconds"))." (".timetotomorrow("hours")."h ".timetotomorrow("minutes")."m ".timetotomorrow("seconds")."s),viewonly",[/php]
  • index.php:[php]//// Finden:
    $time = gametime();
    // $tomorrow = strtotime(date("Y-m-d H:i:s",$time)." + 1 day");
    $tomorrow = mktime(0,0,0,date('m',$time),date('d',$time)+1,date('Y',$time));
    // $tomorrow = strtotime(date("Y-m-d 00:00:00",$tomorrow));
    $secstotomorrow = $tomorrow-$time;
    $realsecstotomorrow = round($secstotomorrow / (int)getsetting("daysperday",4));
    output("`@Nächster neuer Tag in: `3".date("G \\S\\t\\u\\n\\d\\e\\n, i \\M\\i\\n\\u\\t\\e\\n, s \\S\\e\\k\\u\\n\\d\\e\\n\\ \\(\\E\\c\\h\\t\\z\\e\\i\\t\\)",strtotime("1980-01-01 00:00:00 + $realsecstotomorrow seconds"))."`0`n`n");


    //// Ersetzen durch:
    $tomorrow=timetotomorrow();
    output("`@Nächster neuer Tag in: `3 {$tomorrow['hours']} Stunden, {$tomorrow['minutes']} Minuten, {$tomorrow['seconds']} Sekunden.`0`n`n");[/php]
  • graveyard.php:[php]//// Finden:
    $time = gametime();
    $tomorrow = strtotime(date("Y-m-d H:i:s",$time)." + 1 day");
    $tomorrow = strtotime(date("Y-m-d 00:00:00",$tomorrow));
    $secstotomorrow = $tomorrow-$time;
    $realsecstotomorrow = $secstotomorrow / getsetting("daysperday",4);
    output("`\$Ramius`) raunzt dir genervt entgegen, dass du noch `^".date("G\\h, i\\m, s\\s",strtotime("1980-01-01 00:00:00 + $realsecstotomorrow seconds"))."`) hier bleiben musst, wenn du nicht weiter für ihn arbeiten willst.");


    //// Ersetzen durch:
    $zeit=timetotomorrow();
    output("`\$Ramius`) raunzt dir genervt entgegen, dass du noch `^{$zeit['hours']} Stunden, {$zeit['minutes']} Minuten und {$zeit['seconds']} Sekunden hier bleiben musst, wenn du nicht weiter für ihn arbeiten willst.");[/php]

Autor:  anpera [ Mi 07 Dez, 2005 14:02 ]
Betreff des Beitrags: 

Noch eine Anpassung an PHP 5.0.5 und neuer:

setnewday.php:[php]////Finden:
for ($i=0;$i<db_num_rows($result);$i++){
list($key,$val)=each(db_fetch_assoc($result));
db_query("OPTIMIZE TABLE $val");
}


//// Ersetzen durch:
while ($helferlein=db_fetch_assoc($result)){
list($key,$val)=each($helferlein);
db_query("OPTIMIZE TABLE $val");
}[/php]

Autor:  anpera [ Sa 01 Apr, 2006 01:24 ]
Betreff des Beitrags: 

KRITISCHE LÜCKE!

Bitte führt so bald wie möglich und bis auf Weiteres folgende Notlösung in der source.php durch, um eure Server zu schützen:


[php]//// Finde:
$subdir = str_replace("\\","/",dirname($_SERVER['SCRIPT_NAME'])."/");

//// Danach einfügen:
while(substr($subdir,0,2)=="//" ){
$subdir = substr($subdir,1);
}[/php]

Autor:  anpera [ So 17 Sep, 2006 12:35 ]
Betreff des Beitrags: 

Deathbringer hat eine Lücke im Nav-System gemeldet, über die es den Spielern möglich ist, unerlaubte Scripte auszuführen.

Bis der Fehler behoben ist, kann folgender Patch die Cheaterei unterbinden, indem die Scripausführung abgebrochen wird, sobald jemand auf diese Weise zu Cheaten versucht:
[php]/// Öffne: common.php
/// Finde:
$SCRIPT_NAME=substr($SCRIPT_NAME,strrpos($SCRIPT_NAME,"/")+1);

/// Füge danach ein:
// Notfall-Fix gegen Cheaterei
if (substr($SCRIPT_NAME,strrpos($SCRIPT_NAME,".php"))!=".php" || strpos($PATH_INFO,".php")){
echo "Verarbeitung abgebrochen. Das Script ist ungueltig.";
exit();
}[/php]

Autor:  anpera [ Di 19 Sep, 2006 17:26 ]
Betreff des Beitrags: 

Schon wieder eine kritische Lücke gemeldet worden. Diesmal von Devilzimti.

Bitte unbedingt ausbessern!
Lösung aus DE v4:[php]//// Öffne: topwebvote.php
// Finden:
$id = $_POST['acctid'];

// Ersetzen durch:
$id = (int)($_POST['acctid']);[/php]

Autor:  anpera [ Mo 22 Jun, 2009 15:07 ]
Betreff des Beitrags:  Re: Changes Log

Wieder eine Sicherheitslücke gestopft. Diesmal gemeldet von Eliwood:
Zitat:
In der common.php gehört session_register('session') ersetzt mit folgendem Stück code:
$this->bbcode_second_pass_code('', '// Session einstellen & starten
session_name('IrgendEinNameOhneBesondereZeichen');
session_set_cookie_params(0, dirname($_SERVER['PHP_SELF']), $_SERVER['HTTP_HOST']);
session_start();
')

Danke für den Hinweis.

Autor:  anpera [ So 09 Mai, 2010 12:37 ]
Betreff des Beitrags:  Re: Changes Log

Nach langer Zeit wieder ein Bugfix, erstmals gemeldet von Linus und behoben mit der Lösung von Auric.

Wenn vor dem Hotkey ein Farbcode steht, der den selben Buchstaben benutzt wie der Hokey, kommt die Funktion addnav() in der common.php durcheinander und zerschießt die Navigationsleiste.

In der common.php:
PHP:
//Suche
$text=substr($text,0,strpos($text,$key))."`H".$key."`H".substr($text,strpos($text,$key)+1);
// Ersetze mit
$index=substr($text,strpos($text,$key)-1,1)=="`"?strpos($text,$key)+1:strpos($text,$key);
$text=substr($text,0,$index)."`H".$key."`H".substr($text,$index+1);


Danke für den Hinweis und die Lösung :)

Seite 3 von 3 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/