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

Warte Script im PHP Modul (DSV)
https://anpera.dyndns.org/phpbb3/viewtopic.php?f=34&t=5127
Seite 1 von 1

Autor:  Victorinus [ Fr 02 Apr, 2010 13:47 ]
Betreff des Beitrags:  Warte Script im PHP Modul (DSV)

Hallo,
habe eine nette Idee aber es scheitert an der Ausführung (Wie so oft :()
Die DS3 Version hat eine Reload-Sperre. Nach 10 Sekunden und einem Klick auf 'Weiter' kommt man wieder zur Startseite. Das ganze möchte ich nun für ein Ingame Reisemodul verwenden. Sprich weite Strecken benötigen Zeit und man ist nicht per Klick sofort da.
Mein Problem ist folgendes:
Sobald ich output verwende muss ich entweder ' oder " verwenden [ output('INHALT'); oder output("INHALT"); ]
Wenn im entsprechenden Javascript aber beides(' und ") vorkommt, sollte man dies normalerweise mit \" bzw. \' entschärfen.
Klappt nur nicht.
$this->bbcode_second_pass_code('', '<script type="text/javascript" language="JavaScript">
var count = <? echo (RELOAD_STOP_TIME-$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>')
Dies ist der Javascript aus der reload_sperre (In diesem Fall index.php weiterleitung)
Hat jemand eine Idee,wie man das ding dennoch mittels output einbinden kann?
Habe die reloadsperre als .txt auf meinem Server geladen, falls da jemand genauer hinschauen mag (Ist nen HTML dokument in .php gespeichert)
http://asmeria.de/reload_stop.txt
Mfg
Sascha

Autor:  Salator [ Fr 02 Apr, 2010 21:47 ]
Betreff des Beitrags:  Re: Warte Script im PHP Modul (DSV3)

Aber selbstverständlich kann man Javascript-Code per output ausgeben. Man muss nur darauf achten dass die Anführungszeichen richtig escaped sind. Wird für den output-Befehl das doppelte Anführungszeichen benutzt ("bla"), muss dieses im Text escaped werden ("bla\"blubb\" ")und das einfache Anführungszeicheh bleibt wie es ist ("bla'blubb' ").
Zur Kontrolle sollte man sich dann den generierten html-Quelltext ansehen.

Ich nehme für die oben genannte Aufgabenstellung übrigens gerne den Rasten-Code aus Talions Wohnviertel. Dafür wird allerdings die DS V3 benötigt.
So ist das z.B. bei meiner Hafen-Version auf speziellen Wunsch von Kaltenstayn drin.

Man kann das natürlich auch als Funktion bauen. Wer den folgenden Code allgemeiner haben will sollte $str_lnk auch noch als Parameter übergeben.
$this->bbcode_second_pass_code('', '
/**
* @desc Gibt einen Countdown aus und erstellt nach Ablauf die Links zum finish-Teil innerhalb des run-Hooks
*
* @param int Dauer in Sekunden
* @param string Text für den Counter
* @param string Text für die nach Ablauf erscheinende Messagebox
* @param string Überschrift für die Messagebox
* @return Javascript-Output für Countdown
* @author Talions Rasten-Code aus dem neuen Wohnviertel
*/
function quest_countdown($int_timecost,$str_counttext,$str_endtext,$str_endhead)
{
global $session,$nav;

$session['getnd'] = time(); //hier noch ne andere Lösung finden
$str_lnk = 'quest.php?do=run&op=finish&quest='.$_GET['quest'];
addnav('',$str_lnk);
//Einen ausgeblendeten Link erstellen.
$nav.='<span id="extralink" style="display: none;">';
addnav('Weiter',$str_lnk);
$nav.='</span>';
output('`n`n`c<input type="button" value="" onclick="window.location.href=\''.$str_lnk.'\';" id="rest_but">`c
<script type="text/javascript">
var time = '.$int_timecost.';
counter();
function counter () {
var b = document.getElementById("rest_but");
var nav = document.getElementById("extralink");
if(time > 0) {
b.disabled = true;
b.value = "'.$str_counttext.'";
time--;
window.setTimeout("counter();",1000);
return;
}
b.disabled = false;
b.value = "Weiter!";
nav.style.visibility = "visible";
nav.style.display = "inline";
MessageBox.show("'.$str_endtext.'","'.$str_endhead.'");
}
</script>');

}
')

Autor:  Chaos [ Sa 03 Apr, 2010 19:35 ]
Betreff des Beitrags:  Re: Warte Script im PHP Modul (DSV)

Ich bin grad nicht sicher, da ich die DS Version nicht kenne, daher frage ich einfach mal.

Seh ich das richtig das die reloadsperre nur über javascript läuft? ich seh da zwar ne mit PHP vorgebene variable, aber wird auch im hintergrund via php überprüft ob die Zeit wirklich gewartet wurde? sonst könnte man ja die javascript befehle deaktivieren oder umschreiben so dass man die längere wartezeit in dem fall umgehen kann. Und dann einfach direkt auf Weiter klicken ohne gewartet zu haben...

Falls das so ist sollte da evtl. auch was dran gemacht werden wenn es für reisezeiten einwandfrei nutzbar sein soll

Autor:  Salator [ Sa 03 Apr, 2010 20:52 ]
Betreff des Beitrags:  Re: Warte Script im PHP Modul (DSV)

Guter Einwand. Zwar ist für das Spielen auf der DS-Edition zwingend Javascript erforderlich, aber wenn man die Ziel-URL kennt kann man diese erfolgreich direkt eingeben.

Original ist da noch eine Zeile
$session['getnd'] = time();
am Anfang drin, die eine serverseitige Prüfung ermöglicht. Die hatte ich kurz vor meinem Post rausgenommen weil ich die Stelle anders machen will. Sorry.

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