Ik heb al zoveel liggen zoeken op het internet, maar ik kom er maar niet uit.
Is het mogelijk om een pagina te laten refreshen, maar enkel als een PHP conditie is voldaan?
Ik dacht dat dit wel mogelijk moest zijn met jquery. Maar ik ben niet echt enorm sterk hiermee (ik kan wel wat in elkaar boksen, maar niet veel).
Waarom wil ik dit gebruiken? Wel na het posten van een spelletjesscore, dan zou de gebruiker moeten doorgestuurd worden naar een andere pagina. Het probleem is dat de score verwerkt wordt via een gateway en dus enkel opgeslagen wordt in de database. De gebruiker duwt dus niet op submit ofzo.
Ik wil dus controleren of er al een score in de database is gepost en zoja, de gebruiker doorsturen naar een andere pagina.
Haha weer een heel lang verhaal voor een eigenlijk klein probleem.
Je zou dat kunnen door via een AJAX-request de "target" op te halen vanuit een PHP pagina. Als het OK is geef je die URL terug.
Andere optie is om te checken via ajax of die conditie voldaan is, en indien je "true" of whatever terugstuurt vanuit die PHP, redirecten, maar dan kan de eerste beste ook die URL gewoon uit de broncode halen en er rechtstreeks naar navigeren. Maar dat men dan uiteraard ook weer gewoon als men 1 keer geredirect is. Dus dan zou je beter alweer een url teruggeven met daarin een bepaalde hash zodat je kan checken of de redirect authentiek is.
Je zou dat kunnen door via een AJAX-request de "target" op te halen vanuit een PHP pagina. Als het OK is geef je die URL terug.
Andere optie is om te checken via ajax of die conditie voldaan is, en indien je "true" of whatever terugstuurt vanuit die PHP, redirecten, maar dan kan de eerste beste ook die URL gewoon uit de broncode halen en er rechtstreeks naar navigeren. Maar dat men dan uiteraard ook weer gewoon als men 1 keer geredirect is. Dus dan zou je beter alweer een url teruggeven met daarin een bepaalde hash zodat je kan checken of de redirect authentiek is.
De 2e optie probeer ik inderdaad te doen.
Ik wil wel niet redirecten, maar gewoon dat de pagina refresht na het posten van de score.
Maar hoe zet ik dan die conditie (php query) in jquery zodat deze refresht na het posten van de score
$.get('een-check.php', function(data) {
if(data == 'ok') location.href = 'een-andere-pagina.php';
// of als de output van je pagina de nieuwe link bevat
location.href = data;
});
<script type="text/javascript"
src="../js/jquery-1.5.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
setInterval(function() {
$.get('scorepost.php', function(data) {
if(data == 'Ok'){
alert("Goed gespeeld! Druk op Ok, om doorgestuurd te worden naar het dagspel overzicht.");
location.href = 'dagspel.php';
}
});
}, 1000);
});
</script>
<script type="text/javascript"
src="../js/jquery-1.5.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
setInterval(function(){
$.get('scorepost.php',function(data){
if(data =='Ok'){
alert("Goed gespeeld! Druk op Ok, om doorgestuurd te worden naar het dagspel overzicht.");
location.href='dagspel.php';
}
});
},1000);
});
</script>
Let wel op: indien iemand dit ooit wilt gebruiken. De gebruiker moet javascript hebben ingeschakelt. Anders wordt hij bij mij doorverbonden naar een andere pagina via <noscript>.
Let hier wel bij op! Dit houdt dus in dat elke user op deze pagina dus 1 load per seconde doet. dat is 60p/m, bij 10 users zit je op 600 p/m. Nogsteeds geen probleem voor bijna alle servers, maar dit is dus wel een situatie waar je niet te makkelijk mee moet omgaan. Doe dit truucje op 10 pagina's en je load zal steeds meer groeien.
Nogmaals, in deze situatie heb je geen problemen, maar het is iets om rekening mee te houden. Je kunt bv ipv 'ok' "1" terug sturen, scheelt je een byte p/load. Again, in dit voorbeeld amper van waarde, maar als je het gaat uitbreiden ;) Ook je php zo klein/snel/effecient mogelijk houden.
edit: Bedenk me zo, browsers zouden er nog wel eens langzamer door kunnen worden, zker op oudere pc's. Eens per 2sec zou bijvoorbeeld netzogoed kunnen.
Of eens per 5seconde, met een timertje ernaast met 'refresh in 5, 4, 3, 2, 1'
@ Martijn: Thx voor de feedback! Ik heb inderdaad ook al zitten denken aan de server load. Ik ga het sowieso inderdaad terugsturen met waarde 1. Het is wel slecht 1 query die geladen dient te worden elke seconde. Ik ga het straks ook eens testen voor elke 2 seconden.
@ Maarten: Als je daarnaar navigeert, dan kom je gewoon op de overzicht pagina. Daar mag ja van mij zoveel naar navigeren als je zelf wilt als lid. De resultaten worden toch ergens anders verwerkt. Ook wordt alles netjes via POST variabelen geregeld, dus is de kans op manipulatie door de gebruiker zeer klein (is natuurlijk nooit onbestaand).
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.