Webseite Weiterleitung bei externem Event

blennitom

Enthusiast
Thread Starter
Mitglied seit
20.10.2003
Beiträge
3.132
Ort
Dorfen
Hi zusammen,

ich würde gerne eine Webseite so steuern, dass bei einem externen Event eine Weiterleitung stattfindet.
Kurz zum Hintergrund:
Es soll eine kleine (nicht öffentliche) Seite werden, bei der über eine Admin-Seite gesteuert werden kann, wann auf die nächste Seite gewechselt wird.

Aktuell habe ich es so gelöst:
Code:
<script type="text/javascript">
	$(document).ready(function(){
		setTimeout(checkReload, 1000);
	});
	function checkReload(){
		if (ReadFile("start.txt?<?php echo time()?>") == "true") {
			location.assign("welcome.php");
		} else {
			setTimeout(checkReload,1000);
		}
	};
	function ReadFile(fileUrl) { 
		var req; 
		var fileContent; 
		// branch for native XMLHttpRequest object 
		if (window.XMLHttpRequest) { 
			req = new XMLHttpRequest(); 
			req.open("GET", fileUrl, false); 
			req.send(null); 
			fileContent = req.responseText; 
		// branch for IE/Windows ActiveX version 
		} else if (window.ActiveXObject) { 
			req = new ActiveXObject("Microsoft.XMLHTTP"); 
			req.open("GET", fileUrl, false); 
				req.onreadystatechange=function() { 
				if (req.readyState == 4) { 
					fileContent = req.responseText; 
				} 
			} 
			req.send(null); 
		} 
		return fileContent; 
	}
</script>

Sobald also in der Datei start.txt true steht, werde ich automatisch auf die Seite welcome.php weitergeleitet. Prinzipiell funktioniert das allerdings schon sehr gut.

Allerdings habe ich zeitweise das Problem, dass der Inhalt der start.txt scheinbar zwischengespeichert wird und eine Änderung nicht erkannt wird. Erst, wenn ich explizit die start.txt im Browser öffne und diese dann neu lade, ist der neue Inhalt aktiv und die Weiterleitung funktioniert wieder. Um das zu umgehen, habe ich schon den Tipp bekommen, einen Zeitstempel anzuhängen (?<?php echo time()?>), das bringt aber leider auch nichts.

Könnt ihr mir helfen? Welche Möglichkeit gibt es, das Zwischenspeichern zu unterdrücken? Oder gibt es evtl. auch einen komplett anderen Ansatz? Ich bin für alles offen, es sollte nur zuverlässig funktionieren ;)

Vielen Dank für eure Hilfe
Blenni
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
klingt eher nach einem Cache Problem. Cachen vermeiden

Vll bringt es ja was.
 
Eigentlich kann man caching mit dem Zeitstempel umgehen.

Du setzt ihn aber nur einmal, wenn du die PHP Seite renderst, das heisst es bleibt immer der gleiche ;)


Du musst den Zeitstempel mit Javascript erzeugen.

Code:
if (ReadFile("start.txt?_t=" + (new Date()).getTime() == "true") {


PS: du hast ja offensichtlich jQuery eingebunden. Dann kannst du auch $.ajax benutzen und dir das ganze Zeug für den Ajax-Request sparen ;) (was man eh nicht mehr braucht, da alle Browser XMLHTTPRequest können)
 
Zuletzt bearbeitet:
:wall: da hätt ich auch selber draufkommen können, dass der Zeitstempel nur einmal erzeugt wird... Danke! :)
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh