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

Badnav Fixer
https://anpera.homeip.net/phpbb3/viewtopic.php?f=25&t=5497
Seite 1 von 1

Autor:  BlackDragon [ Do 11 Okt, 2012 12:04 ]
Betreff des Beitrags:  Badnav Fixer

Hallo zusammen,

ich hätte da mal eine Frage mit der Hoffnung auf Hilfe. Und zwar geht es um einen Badnav Fixer. Weiß zufällig Jemand, wie man diesen einbauen und auch zum Laufen bekommt?

Über jegliche Hilfe in dieser Richtung, wäre ich recht dankbar (:

Autor:  Bathory [ Do 11 Okt, 2012 16:29 ]
Betreff des Beitrags:  Re: Badnav Fixer

Das ist einfach. ;)

Aber ohne verlinkte Source (die eigentlich Pflicht für Support ist) im Profil kann ich nur raten welche Version du hast, ergo erwarte zM von mir keine Antwort.

Autor:  BlackDragon [ Do 11 Okt, 2012 18:30 ]
Betreff des Beitrags:  Re: Badnav Fixer

Ups sry, hab das nun mal aktualisiert (;
Vll könnte mir dann jetzt jemand bei dem Problem helfen?
Das wäre ganz lieb (:

Autor:  Bathory [ Fr 12 Okt, 2012 15:52 ]
Betreff des Beitrags:  Re: Badnav Fixer

Wo willst du den badnav-Fixer einbauen?

Soll der Badnav-Fixer automatischer Natur sein? (Habe da einen experimentellen Badnav Fixer der den Output miteinbezieht rumliegen) mit Betonung auf experimentell, d anie live eingesetzt wurde.

Bzw welche Anforderungen stellst du dem Badnav-Fixer?

Autor:  BlackDragon [ Fr 12 Okt, 2012 16:50 ]
Betreff des Beitrags:  Re: Badnav Fixer

Der Badnav-Fixer soll in die Vitalinfo mit eingebaut werden, damit die User einen schnellen Zugriff darauf haben, je nachdem wo sie fest stecken.

Also er sollte leicht zu handhaben sein, sodass User jederzeit wieder aus einem Badnav heraus kommen können. Also große Anforderungen sonst gibt es da nicht, die jetzt da besonders weitreichend wären.

Wenn der automatische auch leicht zu handhaben wäre, klingt dieser ja auch schon interessant. Würde es dir denn etwas ausmachen, mir beide Alternativen zu zeigen?
Das wäre echt lieb (:

Autor:  Yoichiro [ Mo 15 Okt, 2012 22:06 ]
Betreff des Beitrags:  Re: Badnav Fixer

Dir ist hoffentlich klar, dass die Spieler damit einiges an Müll anstellen können oder? Wenn sie im Wald kämpfen und kurz vorm verlieren sind, kurz das Knöpfchen gedrückt und gut ist. Oder wenn sie auf ner Insel sind, wo die Überfahrt was kostet (alles kenne ich auf Falinn noch nicht ^^) drauf gedrückt und sie sind in der Hauptstadt. Das musst du bei solchen Sachen auch bedenken. Ist nicht böse gemeint, bitte nicht falsch verstehen :)

Autor:  BlackDragon [ Di 16 Okt, 2012 11:47 ]
Betreff des Beitrags:  Re: Badnav Fixer

Danke fürs Bescheid geben =) Ist echt lieb.
Gibt es denn da keine Möglichkeit solches dann zu umgehen in irgendeiner Art und Weise? Das eben solches nicht geschieht? Also das der Fixer dann in der Art 'ausgenutzt' wird?
Vielleicht jetzt eine blöde Frage, aber ich stell sie nun trotzdem einfach mal. (;

Autor:  Yoichiro [ Di 16 Okt, 2012 19:02 ]
Betreff des Beitrags:  Re: Badnav Fixer

In der Theorie schon, ich hab nur leider keinen Schimmer wie sich sowas umsetzen lässt...

Wenn man ins Badnav kommt steht ja in der Leiste badnav.php. Dass der Fixer nur auftaucht, wenn man ganz gezielt in dieser php landet. Wäre so meine Idee aber ich hab echt keinen Schimmer von der Umsetzung, falls es überhaupt möglich ist

Autor:  BlackDragon [ Mi 17 Okt, 2012 16:37 ]
Betreff des Beitrags:  Re: Badnav Fixer

Dennoch danke für die schnelle Antwort. (:
Vielleicht hat ja noch sonst Jemand eine Idee davon?
Wenn ja, wäre ich sehr dankbar, Hilfe dafür zu bekommen.
Oder eben auch generell was den Badnav-Fixer anbelangt.

Autor:  Charon [ Do 18 Okt, 2012 18:51 ]
Betreff des Beitrags:  Re: Badnav Fixer

Habt ihr denn so oft Leute, die in badnavs hängen, dass so etwas benötigt wird?
Vielleicht sollte man da eher nach der Ursache schauen. Ich wüsste jetzt zumindest kaum, wann ich überhaupt mal jemanden befreien musste. Es gab vielleicht ein zwei Überraschungen in alten Skripten, aber das war alles erklärbar und zu beheben.

Autor:  Bathory [ Fr 19 Okt, 2012 04:25 ]
Betreff des Beitrags:  Re: Badnav Fixer

Bathis-Automatischer-Badnav-Fixer (wie gesagt experimentell und nie getestet oder benutzt worden):

Ersatz für badnav.php (NIEMALS live anwenden, sondern als Inspiration verwenden ;) )
$this->bbcode_second_pass_code('', '
<?
// WICHTIG!
// function redirect(...){ } erweitern:
//
// function redirect($location,$reason=false){
// global $session,$REQUEST_URI;
//
// $session['lastrequest'] = $REQUEST_URI; //<= das ist neu
// [...alles andere bleibt identisch...]
// }
//

require_once 'common.php';

$session['debug'].='Badnav';

if ($session['user']['loggedin'] && $session['loggedin'])
{
$request = $session['lastrequest'];

if(!check_navs($session['allowednavs']))
{
$session['debug'].=' Keine sinnvolle allowed nav gefunden => reset der navs ';
debuglog(' Keine sinnvolle allowed nav gefunden => reset der navs [request: "'.$request.'" restorepage: "'.$session['user']['restorepage'].'"]');
redirect_village();
}
else // Navs und Output sind gültig und sinnvoll überprüfen wir also wo der request happert, sprich Fehler finden und bereinigen!
{
if(!array_key_exists($request,$session['allowednavs']))
{
if(check_nav_in_output($request)) // entwickler ist schuld! Hat einen Link ohne Addnav eingebaut!
{
debuglog(' Entwickler hat addnav in '.$request.' vergessen! Folgender '.$request.' war im Output, aber nicht in allowednavs zu finden!
Eintrag in allowednavs wurde als dirty workaround hinzugefügt. Schnellstmöglich beheben!!! ');
$session['allowednavs'][$request] = true;
}
else // user ist schuld ergo -> cheater!
{
debuglog(' Beim cheaten erwischt? '.$request.' war weder in allowednavs noch im Output zu finden! [restorepage: "'.$session['user']['restorepage'].'"]');
}
}

$session['user']['allowednavs'] = $session['allowednavs'];
saveuser();

if (is_new_day() && strpos($session['output'],"<!--CheckNewDay()-->") !== false)
{
debuglog(' Badnav [request: '.$request.'] ~> Newday [ restorepage: "'.$session['user']['restorepage'].'" wurde zurückgesetzt zu "village.php" ] ');
$session['user']['allowednavs'] = array();
addnav('','village.php');
$session['user']['restorepage'] = 'village.php';
redirect('newday.php');
}

echo $session['output'];
}
}
else
{
$session=array();
redirect('index.php');
}


// nützliche Funktionen


function check_navs($navs)
{
global $allownonnav,$nokeeprestore;

$noreturnnavs = array_merge($allownonnav, $nokeeprestore, array('httpreq.php' => 1)); //WICHTIG: Array mit ajax-php files ergänzen oder sonstige sinnlose navs...

if(is_array($navs))
{
foreach($navs as $key => $val)
{
if( array_key_exists("".( strpos($key,'?') ? substr($key,0,strpos($key,'?')) : $key )."",$noreturnnavs) || (trim($key)=='') || ($key===0) )
{
unset($navs[$key]);
}
else
{
if(!check_nav_in_output($key)) // ist die sinnvolle nav nicht im output?
{
unset($navs[$key]); // also aus dem temp array löschen, da user sie nicht benutzen kann
}
}
}

return ( (count($navs) > 0) ? true : false );
}
else
{
return false;
}
}

function check_nav_in_output($nav)
{
global $session;

if($session['output'] != '' && $nav != '')
{
if( preg_match('/<a\s[^>]*href\s*=\s*[\'\"]\s*'.$nav.'\s*[\'\"][^>]*>(.*)<\s*\/\s*a>/siU',$session['output']))
{
return true;
}
}
else
{
return false;
}
}


function redirect_village()
{
global $session;

$session['user']['allowednavs'] = array();
addnav('','village.php');
$session['user']['restorepage'] = 'village.php';

if(is_new_day())
{
redirect('newday.php');
}
else
{
$session['output'] = '<a href="village.php">Deine erlaubten Navs waren beschädigt. Zurück zum Dorf.</a>';
}
}
?>
')

Verbesserungen zum Skript hier: viewtopic.php?f=25&t=5497&p=57055#p57055

Autor:  BlackDragon [ Fr 19 Okt, 2012 09:05 ]
Betreff des Beitrags:  Re: Badnav Fixer

@Charon: Doch da sind schon öfter Leute, die da in einen Badnav geraten. (;
@Bathory: Danke für das Script =) Wir werden es austesten und dann unsere Erfahrungen damit berichten. ^^

Autor:  Bathory [ Fr 19 Okt, 2012 20:02 ]
Betreff des Beitrags:  Re: Badnav Fixer

ich sehe gerade da fehlt noch ne überprüfung ob der link nicht in einem form tag ist :) auch ne beliebte Badnav Quelle :)

also statt:
$this->bbcode_second_pass_code('', '
if( preg_match('/<a\s[^>]*href\s*=\s*[\'\"]\s*'.$nav.'\s*[\'\"][^>]*>(.*)<\s*\/\s*a>/siU',$session['output']))')

sowas:
$this->bbcode_second_pass_code('', '
if(
preg_match('/<a\s[^>]*href\s*=\s*[\'\"]\s*'.$nav.'\s*[\'\"][^>]*>(.*)<\s*\/\s*a>/siU',$session['output'])
|| preg_match('/<form\s[^>]*action="'.$nav.'"[^>]*>/siU',$session['output'])
)')

und nach dem hier:

$this->bbcode_second_pass_code('', '$session['allowednavs'][$request] = true;')

wäre vllt das hier auch nicht schlecht:

$this->bbcode_second_pass_code('', 'redirect($request); ')

:D

p.s.: solltet ihr in eurem LoGD html erlauben und darin keine Forms und Links rausfiltern, sollte man dieses System nicht verwenden, niemals! Weil dem Output, dann nicht mehr getraut werden kann.

p.p.s.: Wenn ihr html erlaubt immer gefährliche tags wie links und Forms entfernen, auch wenn ihr diese System nicht benutzt :D

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