anpera.net
https://anpera.dyndns.org/phpbb3/

Badnav verstehen
https://anpera.dyndns.org/phpbb3/viewtopic.php?f=25&t=3533
Seite 1 von 1

Autor:  Song Sinen [ So 01 Apr, 2007 09:38 ]
Betreff des Beitrags:  Badnav verstehen

Hallo!

Ich hab nix dazu gefunden, bittetötetmichnicht wenns doch schon eines gibt!

Kann mir einer von euch schlauen Köpfen mal genau erklären wie ein Badnav genau entsteht?

- offenbar ists ein Fehler im Code, aber wie sieht der aus?

- und warum bekommt man einen Badnav wenn man zu schnell klickt?

Eine kurze Erläuterung wie das mit den Navs genau vor sich geht würde vl. Licht auf die Sache werfen. Ich hatte im letzten Testmonat 1200 Badnavs bei nichtmal 30 Testern und die Badnavs treten überall auf.

Bitte bitte erklärt mir wie die Navs funktionieren damit ich meinen Code in den Griff kriege.

Liebe Grüße,

Song Sinen

Autor:  Kevz [ So 01 Apr, 2007 09:49 ]
Betreff des Beitrags: 

Die Badnav (Kaputte Navigation), ensteht eig. Hauptsächlich (bzw. zum größtenteil) durch schnelles Klicken, bei Formularen wo keine Navigation vorhanden ist, versuchen die URL zu manipulieren (innerhalb des Spiels) oder auch ggf. Fehler im Script.

Es kommt deshalb eine badnav beim Schnellen klicken, weil es in LotGD einen Art Cheatschutz für die Navigation bzw. das Aufrufen von Navigationen gibt. Da ja LotGD auf Serverseitiges aufgebaut ist, wird natürlich erst beim nächsten neu Laden der Seite die Änderung ausgegeben/eine neue gemacht.

Bei Formularen ist das eig. ne ganz Lustige sache, denn wenn du ein Formular erstellst, musst du auch eine Leere Navigation dazu erstellen, um somit eine badnav zu vermeiden. Ansonsten wirst du nämlich sofort dort hingeleitet.


Btw.:
Kannst du vllt. erläutern wo die Fehler genau auftreten? Dann könnte man in etwa sagen wo genau der Fehler ist. Bzw., diesen näher kommen, um sie zu beheben.

Autor:  Song Sinen [ Mo 02 Apr, 2007 00:50 ]
Betreff des Beitrags: 

Hm, interesannt...

Ich hab mal mit den Tester gesprochen, keiner hat an der Url rumgespielt oder etwas ähnliches gehabt. Auch treten die Badnavs bei keinem bestimmten Skript auf (jedenfalls nicht auffällig). Sprich: Entweder mach ich generell etwas falsch oder die hohe Zahl der Navs kommt vom schnellen klicken.

Ich lehne mich jetzt mal ganz weit aus dem Fenster, aber...
Wenn man das gesammte LoGD in einen ilayer stecken würde mit 100% heigh und width so dass es nicht auffällt... Soweit ich mich entsinne würden die Links / Navs erst aktiviert wenn der Layer-Inhalt ausgeladen ist und das würde wiederum den Badnav durch schnelles Klicken verhindern.

Könnte das klappen? Und wie müsste ich hierfür die Templates ändern?
(Bin mit css leider nicht sehr bewandert sonst hätt ichs schon getestet.)

Liebe Grüße,

Song Sinen

Autor:  Auric [ Mo 02 Apr, 2007 01:23 ]
Betreff des Beitrags: 

Warte am besten einfach, bs Kevz seine AJAX-Version fertig hat, die dürfte das problem lösen.

Was deine Idee anbelangt, hab ich da doch eher meine Zweifel, das das helfen mag.

Autor:  Kevz [ Mo 02 Apr, 2007 10:29 ]
Betreff des Beitrags: 

Danke, Auric.
Kaputte Navigationen (badnavs), sind eig. normal. Sie treten je nach Fehlerhervorrufen auf, dass ist natürlich in der hinsicht ganz normal. Aber eine derartige große anzahl von badnavs ist doch etwas merkwürdig. Zudem du ja auch eine nicht gerade sehr große zahl hast an Mitspielern wie du bereits geschrieben hattes.

Wenn die badnavs nur an bestimmten Orten aufreten bzw. Scripten, könntest du es vllt. mit einem Countdown hervorheben. So das man das ganze vllt. verringern kann, aber ansonsten musst du deine User irgendwie dazu zwingen langsamer zu klicken. *lach*

Zu der AJAX- Navigation, ich habe es bei mir so gemacht. Das an bestimmten stellen die Navigation dynamisch nachgeladen wird. Dies ist natürlich besonders von vorteil, wenn gerade badnavs bei schnellen Klicks an gewissen stellen entstehen. Aber man muss dazu auch beachten, dass AJAX natürlich auf JavaScript basiert...

Autor:  -DoM [ Mo 02 Apr, 2007 10:44 ]
Betreff des Beitrags: 

Also ich persönlich habe kaum noch Badnavs.
Wenn der Code halbwegs sauber ist, vor allem im Wald (Specials), wird auch kaum Probleme haben.

Das einzigste was noch immer ab und an vorkommt ist, bei Scripts wo eine grosse Datenmenge aus der DB geladen wird. list.php (>100 Spieler), bio.php (lange Biografien). Dort aber auch nur, wenn die Spielinterne Navi nicht genutzt wird, sondern die Vor-Zurüclbuttons des Browsers, oder "Aktualisieren/F5".

Was Javascript / Ajax angeht, ist dies zwar eine feine Sache, aber ich habe bei gute 10% die kein Javascript zulassen. Daher bin ich generell geizig mit den Funktionen die man leicht über JS realisieren könnte. Formalurabfragen etc...

Autor:  Kevz [ Mo 02 Apr, 2007 10:58 ]
Betreff des Beitrags: 

Das stimmt, aber es ist ja auch nicht Falsch in der hinsicht. Füge kleine dinge lohnt es sich wirklich einfach nur JS pur zu nehmen. Aber sei es denn, um eine Showform- Funktion zu imitieren, lohnt es sich auf jeden fall AJAX doch zu nutzen, wenn man es einfach wenig schöner haben möchte und nicht bedingt auf neu laden der Seite besteht.

Autor:  Song Sinen [ Di 03 Apr, 2007 10:52 ]
Betreff des Beitrags: 

In JS muss ich mich wohl auch mal einarbeiten. 8)

Das mit dem Countdown klingt interesannt, gibt es dafür bereits eine Funktion oder ist es noch die blose Idee?

Ich hab das mit den ilayer versucht doch offenbar klappt es nicht wie bei herkömmlichen Links.

Liebe Grüße,

Song Sinen

Autor:  Kevz [ Di 03 Apr, 2007 10:57 ]
Betreff des Beitrags: 

Es war nur ne blose Idee, aber das umsetzen sollte nicht sonderlich schwer sein. Je nachdem in welcher Sprache du es schreiben möchtest. Aber in PHP würde sich das wohl ehr lohnen, als unnötig in JavaScript zu schreiben.

Autor:  -DoM [ Di 03 Apr, 2007 17:54 ]
Betreff des Beitrags: 

In PHP kannst du aber keinen Countdown schreiben. Es sei denn du trägst eine fixe Zeit in ein DB-Feld, und bietest dem Spieler einen "Aktualisierbutton", welches dann die aktuelle, mit der angegebenen Zeit vergleicht. Dies aber den gegenteiligen Effekt bringen. Zu mal die ich mir die Serverlast bei 20 Spielern nicht vorstellen möchte.

Autor:  Kevz [ Di 03 Apr, 2007 18:15 ]
Betreff des Beitrags: 

Beim Countdown schreiben in PHP, geht man davon aus, dass der jenige dies vorher irgendwo festlegt. Das sollte aber letztendlich klar gewesen sein ;) Aber wenn man JavaScript deaktiviert hat, bringt sogar der Countdown in JS letztendlich nichts. ;)

Autor:  Song Sinen [ Mi 16 Mai, 2007 20:50 ]
Betreff des Beitrags: 

Die Badnavs sind mitlerweile weniger geworden (hatte ein paar Unsauberkeiten in Funktionen, diese sind nun begoben) doch das Schnell-Klicken verursacht immer noch Probleme.

Einer meiner User brachte mich auf dieses kleine Skript:

$this->bbcode_second_pass_code('', ' <script type="text/javascript" language="JavaScript">
var count = <? echo (10-$timediff); ?>;
counter();
function counter () {
if(count == 0) {
document.getElementById("ok_button").value = "Weiter!";
document.getElementById("ok_button").disabled = false;
}
else {
document.getElementById("ok_button").value = "Weiter! (noch "+count+" Sekunden)";
document.getElementById("ok_button").disabled = true;
count--;
setTimeout("counter()",1000);
}
}
</script>')

Eigentlich dient es dazu bei voller Serverauslastung die User am F5-Spam zu hindern, doch wäre es nicht möglich soetwas in die addnav-function zu integrieren?

Leider sind meine Kenntnisse, vorallem mir js, begrenzt, eine Lösung dieses Problems würde mich sehr erfreuen!

Liebe Grüße,

Song Sinen

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