anpera.net

anpera.net

experimental server @home
Aktuelle Zeit: Mo 09 Jun, 2025 13:41

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Warte Script im PHP Modul (DSV)
BeitragVerfasst: Fr 02 Apr, 2010 13:47 
Offline
Profi
Profi
Benutzeravatar

Registriert: So 03 Mai, 2009 16:11
Beiträge: 110
LoGD: www.asmeria.de/source.php
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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Warte Script im PHP Modul (DSV3)
BeitragVerfasst: Fr 02 Apr, 2010 21:47 
Offline
Profi
Profi
Benutzeravatar

Registriert: Mo 02 Feb, 2009 21:11
Beiträge: 168
Geschlecht: Männlich
LoGD: salator.selfhost.de/lotgd
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>');

}
')

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


Zuletzt geändert von Salator am Sa 03 Apr, 2010 20:55, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Warte Script im PHP Modul (DSV)
BeitragVerfasst: Sa 03 Apr, 2010 19:35 
Offline
Lehrling
Lehrling

Registriert: Mi 12 Mär, 2008 23:53
Beiträge: 42
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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Warte Script im PHP Modul (DSV)
BeitragVerfasst: Sa 03 Apr, 2010 20:52 
Offline
Profi
Profi
Benutzeravatar

Registriert: Mo 02 Feb, 2009 21:11
Beiträge: 168
Geschlecht: Männlich
LoGD: salator.selfhost.de/lotgd
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.

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


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

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 8 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